我有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;
。
我不确定如何避免我的错误,所以我认为可能有更好的方法来计算下一次计时器滴答时间。另外,我希望在稳定的时间间隔内倒计时,但我很困惑,不知道如何解决这个问题。
希望得到一些帮助。
答案 0 :(得分:2)
System.Windows.Forms.Timer
有一个int
intervall。将一个小于10的数除以10得到0(整数除法!)。
尝试使用System.Timers.Timer
,它的间隔类型为double
,或检查0并在这种情况下分配1。