2 u014531732 u014531732 于 2014.11.16 15:07 提问

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个回答

caozhy
caozhy   Ds   Rxr 2014.11.18 16:36

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!