2012-01-09 93 views
0

我有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;

我不知道如何避免我的错误,所以我认为可能有更好的倒计时的方法,直到下一个计时器打勾。另外,我想要一个很好的稳定时间间隔倒计数,但我越来越困惑,不知道如何管理这个问题。

希望得到一些帮助。

回答

2

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

尝试使用System.Timers.Timer,它有一个类型为double的区间,或者在这种情况下检查0并指定1。

+0

感谢您的建议,尝试使用双重版本的计时器的时间间隔。可能有用。 – HelpNeeder 2012-01-09 16:59:42

+0

顺便说一句。一个简单的问题。允许的最小时间间隔是多少? – HelpNeeder 2012-01-09 17:01:45

+1

与System.Windows.Forms.Timer其1,为System.Timers.Timer这家伙说它的1/64秒http://www.eggheadcafe.com/community/ask-dr-dotnetsky/12/61662/c- -timer-interval-below-164-sec-.aspx – Peter 2012-01-09 17:05:39