2012-01-09 97 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