我正在制作一个秒表程序,但在停止和启动时遇到了一个小问题。
情况就是这样-我先按下“ 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#不满意)。
答案 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 ...