程序打开9个消息框,而我只想要1

时间:2013-10-14 13:22:35

标签: c# messagebox

当我的计时器达到秒数(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");

1 个答案:

答案 0 :(得分:5)

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

如果你有一个定时器事件处理程序,像你一样泵送消息队列,你需要禁用定时器,至少在你抽取消息队列时,以避免这种重新入侵。