停止并重新启动后,如何使秒表(计时器)从00:00:00开始?

时间:2019-01-20 12:24:53

标签: c# timer stopwatch

我正在制作一个秒表程序,但在停止和启动时遇到了一个小问题。

情况就是这样-我先按下“ StartButton”,然后再按下“ StopButton”,但是在再次按下“ StartButton”之后,它从已经计数的时间开始计数。

计时器功能:

int i = 0;
private void timer1_Tick(object sender, EventArgs e)
{

    TimeSpan time = TimeSpan.FromSeconds(i);
    textBox1.Text = time.ToString(@"hh\:mm\:ss");
    i++;
}

StopButton函数:

private void button4_Click(object sender, EventArgs e)
{
    button3.Visible = true;
    button4.Visible = false;
    timer1.Stop();
    timer1.Enabled = false;
    textBox1.Text = "00:00:00";
}

StartButton函数:

 private void button3_Click(object sender, EventArgs e)
{
    button4.Visible = true;
    button3.Visible = false;
    timer1.Enabled = false;
    timer1.Start();
        textBox1.Text = "00:00:00";
}

我试图使“ textBox1”写为“ 00:00:00”,但它根本不起作用。

(PS我对C#不满意)。

2 个答案:

答案 0 :(得分:0)

我只明白你的问题。每当您停止并启动计时器时,计时器将从0开始。

考虑使用Stopwatch类。使用秒表,您可以始终在暂停的地方继续。

要重新启动秒表,请使用

sw.Reset();
sw.Start();

sw.Restart();

要继续到您离开的地方,请使用

timer1.Stop();
timer1.Start();

答案 1 :(得分:0)

我还应该添加一个带有起始值的字段:

private DateTime _timeStart = DateTime.Now; 

开始/重新启动:

_timeStart = DateTime.Now; 
timer1.Start();

显示:

TimeSpan time = (DateTime.Now - _timeStart).TotalSeconds;
textBox1.Text ...

还有...如果您需要暂停计时器。

我还将添加并使用以下字段来处理暂停时间:

private DateTime _timePauseStart = DateTime.Now;
private TimeSpan _timeSpanPaused;

开始暂停:

timer1.Stop();
_timePauseStart = DateTime.Now;

已暂停结束:

_timeSpanPaused += DateTime.Now - _timePauseStart;
timer1.Start();

显示:

TimeSpan time = (DateTime.Now - _timeStart - timeSpanPaused).TotalSeconds;
textBox1.Text ...