我已经像这样实例化了一个计时器:
System.Timers.Timer seconds = new System.Timers.Timer();
seconds.Elapsed += new ElapsedEventHandler(seconds_Tick);
seconds.Interval = 1;
seconds.Enabled = true; //start timer
我创建了这样的tick事件:
private void seconds_Tick(object sender, EventArgs e)//source
{
time++;
}//end clock_Tick()
time 是代码中声明的整数变量。
我尝试显示结果(在方法中):
txtProcessTime.Text = TimeSpan.FromSeconds(time).ToString();
这很有效,直到计时器运行超过一个小时,所以我尝试了:
txtProcessTime.Text = TimeSpan.FromHours(time).ToString();
这显示了更加不寻常/意外的结果。
我尝试了其他一些但我认为我使用了错误的部分..
我想编写一个计时器,计算时间,毫秒,秒和小时,并将结果显示在文本框中。你能帮忙吗?
计时器以00:00:00的格式显示
TimeSpan.FromHours
问题显示的内容如下:7070:xx:xx(我不记得x的值是多少)。
一旦程序运行超过一小时,TimeSpan.FromSeconds
显示:2:xx:xx(我不记得x的值是什么)。
格式显示为mm:ss:毫秒 - 可能是60分钟过后,分钟转换为单个数字?
答案 0 :(得分:2)
这里显然有一些错误:Interval
中指定了1
,但您将其设置为TimeSpan
。然后,使用FromSeconds
创建seconds.Interval = 1000;
。
因此,如果您希望每秒都有一个事件,请按以下方式设置:
TimeSpan
如果您仍然需要每毫秒,请更改您的txtProcessTime.Text = TimeSpan.FromMilliSeconds(time).ToString()
:
{{1}}
答案 1 :(得分:2)
您可能会发现这更有用,并且可以根据您的要求轻松修改,而不是您当前的方法
using System.Diagnostics
Stopwatch sw;
public Form1()
{
InitializeComponent();
sw = new Stopwatch();
sw.Start();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = sw.Elapsed.ToString();
}