如何将毫秒转换为要在标签中显示的秒单位

本文关键字:标签 显示 单位 转换 | 更新日期: 2023-09-27 18:36:51

我有这个代码:

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 和以前一样。

如何将毫秒转换为要在标签中显示的秒单位

您应该将检查更改为:

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