问题描述
- C# Winform Timer倒计时问题
-
使用Timer控件做一个倒计时器
可以根据输入的值来控制倒计时的事件。假设输入的是180s
第一次点开始按钮是 180 179 178 ......正常的
点了重置按钮之后,第二次点开始按钮就是 180 178 176.....
再次重置并且点击开始按钮之后,变成 180 177 174...
...
这些间隔都是1s这是什么情况?如何解决?
以下为简化版的代码:
private void buttonSetTimeStart_Click(object sender, EventArgs e) { this.Clock = 180; this.timerSetTime.Enabled = true; this.timerSetTime.Tick += new EventHandler(timerSetTime_Tick); this.timerSetTime.Start(); } void timerSetTime_Tick(object sender, EventArgs e) { Clock--; this.labelSetTimeMinute.Text = Clock.ToString(); if (Clock == 0) { this.timerSetTime.Stop(); } } private void buttonSetTimeReset_Click(object sender, EventArgs e) { this.timerSetTime.Enabled = false; this.timerSetTime.Stop(); this.timerSetTime.Interval = 1000; this.labelSetTimeMinute.Text = ""; }
解决方案
问题在这里
this.timerSetTime.Tick += new EventHandler(timerSetTime_Tick);
你每次都挂接了一个新的事件处理程序
导致它被重复执行了2次、3次。
解决方法就是将这一行写在FormLoad中。
时间: 2024-11-03 22:39:01