C# 在标签中显示暂停的计时器值
我创建了一个C#windows窗体应用程序,它使用计时器每5分钟清除一次输入框。有一个名为lblTime的标签,显示应用程序打开时在任何给定点经过的时间量。 我希望能够通过单击按钮禁用或暂停计时器(Clock.Enabled=false),并使lblTime停留在单击按钮时经过的时间量上。但是,由于elapsedTime变量的计算方式(DateTime.Now-startTime),即使在禁用计时器后,该值仍会继续更改 总而言之: lblTime将运行时间显示为时钟滴答声 可以通过单击按钮禁用时钟,但lblTime将继续递增 lblTime需要在禁用时钟的同一按钮上的当前值上停止,然后能够从该值再次开始计数 显示启动时钟、初始化和更新lblTime的代码 如果有任何帮助,我们将不胜感激, 谢谢 标记C# 在标签中显示暂停的计时器值,c#,winforms,timer,C#,Winforms,Timer,我创建了一个C#windows窗体应用程序,它使用计时器每5分钟清除一次输入框。有一个名为lblTime的标签,显示应用程序打开时在任何给定点经过的时间量。 我希望能够通过单击按钮禁用或暂停计时器(Clock.Enabled=false),并使lblTime停留在单击按钮时经过的时间量上。但是,由于elapsedTime变量的计算方式(DateTime.Now-startTime),即使在禁用计时器后,该值仍会继续更改 总而言之: lblTime将运行时间显示为时钟滴答声 可以通过单击按钮禁用时
更改使用倒计时时间的方法。使用时间跨度数据类型。将变量初始化为5分钟
New TimeSpan(0,5,0)
并使用它,而不是开始时间和现在()。使用bool
标志和TimeSpan
以及秒计数器,直到下一次清除:
DateTime startTime = DateTime.Now;
TimeSpan elapsed = new TimeSpan(0);
bool running = true;
int clearInSeconds = 300;
private void Clock_Tick(object sender, EventArgs e)
{
// function one: count elapsed running time
if (running) elapsed = elapsed.Add(new TimeSpan(0, 0, 1));
lblTime.Text = startTime.Add(elapsed).ToLongTimeString();
// function two: clear stuff after interval:
if (clearInSeconds-- <= 0)
{
clearInSeconds = 300;
// clear your stuff now
}
}
DateTime startTime = DateTime.Now;
TimeSpan elapsed = new TimeSpan(0);
bool running = true;
int clearInSeconds = 300;
private void Clock_Tick(object sender, EventArgs e)
{
// function one: count elapsed running time
if (running) elapsed = elapsed.Add(new TimeSpan(0, 0, 1));
lblTime.Text = startTime.Add(elapsed).ToLongTimeString();
// function two: clear stuff after interval:
if (clearInSeconds-- <= 0)
{
clearInSeconds = 300;
// clear your stuff now
}
}
private void lblTime_Click(object sender, EventArgs e)
{
running = !running;
}