为什么毫秒不工作

本文关键字:工作 为什么 | 更新日期: 2023-09-27 18:04:38

我想在label9中显示一个计时器计数:Hours Minutes Seconds MillisecondsTimer1间隔设置为1000

我从timer1 tick事件中调用这个方法:

private void NewsUpdate()
        {
            newText = new List<string>();
            counter += 1;
            TimeSpan t = TimeSpan.FromSeconds(counter);
            string time = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
                            t.Hours,
                            t.Minutes,
                            t.Seconds,
                            t.Milliseconds);
            progressBar1.Value = counter;
            label9.Text = time;
        }

我看到秒在移动,但毫秒仍然在000,为什么毫秒不工作?

为什么毫秒不工作

设置定时器的间隔时间为1,并以毫秒为单位创建TimeSpan对象。

更新代码如下

timer1.Interval = 1;
private void NewsUpdate()
{
    counter += 1;
    TimeSpan t = TimeSpan.FromMilliseconds(counter);
    string time = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D4}ms",
                  t.Hours,
                  t.Minutes,
                  t.Seconds,
                  t.Milliseconds);
    progressBar1.Value = Convert.ToInt32(counter / 1000);
    label9.Text = time;
}

因为您直接从整秒数设置时间跨度。从整数秒数开始的任何时间间隔总是0毫秒。

您可能想要的是将您的时间范围设置为Date.Now(),或者记录计时器开始时的当前时间,并从每个计时器刻度的当前时间中减去该时间。

相关文章: