我想在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,为什么毫秒不起作用?
答案 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(),或者在计时器开始时记录当前时间,并在每个计时器滴答时从当前时间中减去该时间。