2013-10-24 32 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开始。 –

相关问题