显示计时器结果

时间:2013-04-29 21:39:28

标签: c# timer textbox

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

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分钟过后,分钟转换为单个数字?

2 个答案:

答案 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();
    }