2013-10-24 80 views
0

我有這樣的代碼:我如何從毫秒轉換爲秒單位以顯示在標籤中?

private void Form1_MouseWheel(object sender, MouseEventArgs e) 
     { 
      if (leave == true) 
      { 
       if (e.Delta > 0) 
       { 
        if (timer1.Interval < 5000) 
        { 
         timer1.Interval += 1000; 
         label2.Text = (timer1.Interval/1000).ToString(); 
        } 

       } 
       else 
       { 
        if (timer1.Interval == 1000) 
        { 
         timer1.Interval -= 100; 
         label2.Text = (timer1.Interval/1000).ToString(); 
        } 
       } 
      } 
     } 

在設計師最初的定時器1間隔設置爲1000毫秒。 在鼠標滾輪事件中,我做了它,它將在label2中顯示untis在幾秒鐘內。 事實上,當我在幾秒鐘內移動鼠標滾輪其減緩了計時器,並顯示它1 2 3 4 5

的問題是與第二部分我想的是,當其變得到1秒或1000毫秒,如果我將繼續下去它會顯示單位爲100,並以100單位更改timer1.interval。

所以在標籤2,如果它是在1秒鐘,現在我會看到900 800 700 600 500未直到100 同時,也是定時器1區間應該是900毫秒800 700 600,直到變化100

當其get到100只停在那裏不保持在100

獲得該問題是否與此部分:

if (timer1.Interval == 1000) 
        { 
         timer1.Interval -= 100; 
         label2.Text = (timer1.Interval/1000).ToString(); 
        } 

它不工作。

編輯**

我現在代碼:

if (leave == true) 
      { 
       if (e.Delta > 0) 
       { 
        if (timer1.Interval < 5000) 
        { 
         timer1.Interval += 1000; 
         label2.Text = (timer1.Interval/1000).ToString(); 
        } 

       } 
       else 
       { 
        if (timer1.Interval > 1000) { 
         timer1.Interval -= 1000; 
         label2.Text = (timer1.Interval/1000).ToString(); 
        } 

        else 

        if (timer1.Interval <= 1000 && timer1.Interval > 100) 
        { 
         timer1.Interval -= 100; 
         label2.Text = (timer1.Interval/(double)1000).ToString(); 
        } 
       } 
      } 

但現在,如果我是在5秒(5000毫秒)現在我移動輪迴落其計數5 4 3 2 1 0和停止在0

它的劑量顯示在1 ... 0.9 0.8 0.7之下,就像以前一樣。

回答

1

,則應該更換檢查:

if (timer1.Interval <= 1000) 

計時器間隔將只在1000一次,你減去這100之前,使其900通過檢查值<= 1000會繼續努力的方向較低的值。

您可能還需要檢查的時間間隔沒有得到太低,擴大檢查以

if (timer1.Interval <= 1000 && timer1.Interval > 100) 

要顯示的時間不到1秒,你將需要確保的劃分是浮點類型,否則只會顯示0除以整數導致任何分數被截斷

label2.Text = (timer1.Interval/(double)1000).ToString(); 

爲了減少Interval當高於1000,則需要額外的檢查。例如。

if (timer1.Interval > 1000) { 
    timer.Interval -= 1000; 
} else if (timer.Interval <= 1000 && timer.Interval > 100) 
    timer.Interval -= 100; 
} 
+0

史蒂夫你的變化正在爲底部工作,但一旦我得到1秒和以上我不能再次下來。我能得到的最大值是在上面5秒(5000毫秒)。但如果我在2 3 4或5秒內不能再次改變它。爲什麼會停留在1000ms以上的時間間隔?上半部分timer1.Interval <5000是相同的我沒有改變它。只有底部。 –

+0

@DoronMuzar只有當間隔小於等於1000時纔會減少間隔。當間隔小於1000時,還需要減小間隔。我爲答案增加了一些額外的邏輯。 – Steve

+0

史蒂夫在我的問題上請看幾秒鐘,用當前的代碼更新它,就像我從你的例子中做的那樣。但是現在,如果我在5秒鐘後退回到5 4 3 2 1 0並按住0停止,它的劑量從之前的1 0.9 0.8 0.7 0.6開始。 –

相關問題