当我的计时器达到秒数(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");
答案 0 :(得分:5)
很难100%确定发生了什么。我认为,最有可能的是,当您致电MessageBox.Show
时,计时器仍在运行。 MessageBox.Show
运行模态消息循环,导致计时器事件触发。然后他们再次执行并显示消息框。然后再次。再一次。
如果你有一个定时器事件处理程序,像你一样泵送消息队列,你需要禁用定时器,至少在你抽取消息队列时,以避免这种重新入侵。