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

本文关键字:只想 消息 程序 | 更新日期: 2023-09-27 18:35:20

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

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

很难

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

如果您有一个抽取消息队列的计时器事件处理程序,则需要禁用计时器,至少在抽取消息队列时,以避免此类重入。