为什么毫秒不起作用?

时间:2014-05-23 02:58:45

标签: c# winforms

我想在label9中显示一个计时器:小时分秒秒毫秒 Timer1间隔设置为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,为什么毫秒不起作用?

2 个答案:

答案 0 :(得分:2)

将计时器的间隔设置为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;
}

答案 1 :(得分:0)

因为您直接从整秒数设置了时间跨度。从整数秒开始的任何时间跨度都将始终为0毫秒。

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