1

我已经像这样实例化了一个计时器:

System.Timers.Timer seconds = new System.Timers.Timer();
seconds.Elapsed += new ElapsedEventHandler(seconds_Tick);
seconds.Interval = 1;
seconds.Enabled = true; //start timer 

我已经像这样创建了滴答事件:

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:milliseconds - 是否会在 60 分钟过去后将分钟转换为单个数字?

4

2 回答 2

2

这里有一些明显错误:Interval毫秒为单位指定,但您将其设置为1. 然后,您创建TimeSpanusing FromSeconds

因此,如果您希望每秒发生一次事件,请将其设置为:

seconds.Interval = 1000;

如果您仍然希望每毫秒使用一次,请更改您的TimeSpan

txtProcessTime.Text = TimeSpan.FromMilliSeconds(time).ToString()
于 2013-04-29T21:45:42.223 回答
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();
    }
于 2013-04-29T22:36:35.763 回答