0

当我的计时器达到秒数(10、20 或 30)时,我希望出现一个消息框。这可行,但不是只有 1 个消息框,而是出现了 9 个!我不知道为什么?

    private void timer1_Tick(object sender, EventArgs e)
    {
        int hrs = sw.Elapsed.Hours, mins = sw.Elapsed.Minutes, secs = sw.Elapsed.Seconds;
        label5.Text = "";

        if (mins < 60)
            label5.Text += "0" + mins + ":";
        else
            label5.Text += mins + ":";

        if(secs < 60)
            label5.Text += secs;  

       else if(secs < 60)
            label5.Text += secs;

        if (comboBox1.Text == "10 seconden") // maximale tijd per beurt instellen.
            if (mins == 00 && secs == 10)
                MessageBox.Show("Je tijd is op!");

        if (comboBox1.Text == "20 seconden")
            if (mins == 00 && secs == 20)
                MessageBox.Show("Je tijd is op");

        if (comboBox1.Text == "30 seconden")
            if (mins == 00 && secs == 30)
                MessageBox.Show("Je tijd is op");
4

1 回答 1

5

很难 100% 确定发生了什么。我认为,最有可能的是,当您调用MessageBox.Show. 并MessageBox.Show运行一个模式消息循环,导致计时器事件触发。他们再次执行并显示消息框。然后再次。然后再次。

如果您有一个抽送消息队列的计时器事件处理程序,就像您所做的那样,您需要禁用计时器,至少在您抽送消息队列时,以避免这种重新进入。

于 2013-10-14T13:25:32.853 回答