如何倒计时直到计时器的下一个滴答?

时间:2012-01-09 16:49:34

标签: c# timer

我有2个计时器。其中一个是每次滴答时计数;使用稳定间隔,或随机生成一个。第二个计时器倒计时到第一个计时器的下一个滴答。

截至目前我正在这样做:

    private void btnStart_Click(object sender, EventArgs e)
    {
        nextClick = int.Parse(nudClickInterval.Value.ToString());

        if (nudPlusMinus.Value != 0) tmrClickInterval.Interval = random.Next( int.Parse(nudClickInterval.Value.ToString()) - int.Parse(nudPlusMinus.Value.ToString()), int.Parse(nudClickInterval.Value.ToString()) + int.Parse(nudPlusMinus.Value.ToString()));
        else tmrClickInterval.Interval = int.Parse(nudClickInterval.Value.ToString());

        tmrClickInterval.Start();
    }

    private void tmrClickInterval_Tick(object sender, EventArgs e)
    {
        if (nudPlusMinus.Value == 0) tmrClickInterval.Interval = int.Parse(nudClickInterval.Value.ToString());
        else tmrClickInterval.Interval = random.Next(int.Parse(nudClickInterval.Value.ToString()) - int.Parse(nudPlusMinus.Value.ToString()), int.Parse(nudClickInterval.Value.ToString()) + int.Parse(nudPlusMinus.Value.ToString()));

        tmrNextClick.Interval = tmrClickInterval.Interval / 10;
        tmrNextClick.Start();
        content++;
        nextClick = tmrClickInterval.Interval;
        label1.Text = content.ToString();
    }

    private void tmrNextClick_Tick(object sender, EventArgs e)
    {
        if (nextClick <= 0) tmrNextClick.Stop();
        else
        {
            nextClick = nextClick - (tmrClickInterval.Interval / 10);
            lblNextClickCount.Text = (nextClick / 100).ToString();
        }
    }

我通过使用第一个计时器的间隔除以10来设置我的倒计时器的间隔。问题是我不断收到一些错误,例如:Value '0' is not a valid value for Interval. Interval must be greater than 0.行:tmrNextClick.Interval = tmrClickInterval.Interval / 10;

我不确定如何避免我的错误,所以我认为可能有更好的方法来计算下一次计时器滴答时间。另外,我希望在稳定的时间间隔内倒计时,但我很困惑,不知道如何解决这个问题。

希望得到一些帮助。

1 个答案:

答案 0 :(得分:2)

System.Windows.Forms.Timer有一个int intervall。将一个小于10的数除以10得到0(整数除法!)。

尝试使用System.Timers.Timer,它的间隔类型为double,或检查0并在这种情况下分配1。