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 = "";
}

1个回答

问题在这里
this.timerSetTime.Tick += new EventHandler(timerSetTime_Tick);
你每次都挂接了一个新的事件处理程序
导致它被重复执行了2次、3次。
解决方法就是将这一行写在FormLoad中。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问