如何在标签中显示从毫秒转换为秒单位?

时间:2013-10-24 21:10:30

标签: c# winforms

我有这段代码:

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();
                    }
                }
            }
        }

设计器中的原始timer1间隔设置为1000毫秒。 在鼠标滚轮事件中,我做了它,它将在标签2中显示以秒为单位的untis。 事实上,当我向上移动鼠标滚轮时,它会使计时器减速并在几秒钟内显示它1 2 3 4 5

问题在于第二部分我希望当它达到1秒或1000毫秒时如果我继续将其向下旋转它将以100为单位显示单位并以100个单位更改timer1.interval。

所以在label2中,如果是1秒,那么现在我将看到900 800 700 600 500 un到100。 而且timer1间隔应该更改为900毫秒800 700 600直到100。

当它到达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 个答案:

答案 0 :(得分: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时减少它,您需要额外检查。 E.g。

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