您好,我在 C# win 窗体应用程序中重置 Timer 控件时遇到问题。
我正在开发一个简单的倒数计时器。
当我点击 start
时,它从 59 秒开始倒计时。
当我点击 Start
按钮时,我需要计时器应该从头开始重新启动。
关于timer1_tick
的代码
if (hours==0 && minutes==0 && seconds==0)
{
hours = 0;
minutes = 1;
seconds = 0;
}
else
{
if (seconds < 1)
{
seconds = 59;
if (minutes == 0)
{
minutes = 59;
if (hours != 0)
hours -= 1;
}
else
{
minutes -= 1;
}
}
else
seconds -= 1;
lblTime.Text = hours + @":" + minutes + @":" + seconds;
}
和 btnStart_Click
上的代码
timer1.Enabled = false;
timer1.Enabled = true;
在这里,我试图通过启用和禁用 control
来重新启动 timer1
,但它不起作用。
我也尝试检查
timer1.Stop();
timer1.Start();
但它又从弯腰的地方开始。
我们如何解决这个问题?
最佳答案
我建议您存储代表目标时间(当前时间加一分钟)的 DateTime
值:
// or DateTime.Now.AddMinutes(1)
targetTime = DateTime.Now.Add(TimeSpan.FromMinutes(1));
然后在每个计时器刻度上从目标时间减去当前时间并显示 TimeSpan
您将拥有:
var span = targetTime - DateTime.Now;
if (span.TotalSeconds > 0)
lblTime.Text = span.ToString(@"hh\:mm\:ss");
else
lblTime.Text = "Bingo!";
因此,您将不需要存储和维护小时、分钟和秒这三个变量。
关于c# - 定时器在 C# 中没有被重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20704222/