我有一个 Windows 应用程序,它只是一个带有计时器控件的窗体。我已经设法将其追踪到以下情况:
private void timer1_Tick(object sender, EventArgs e)
{
MessageBox.Show("Test");
timer1.Enabled = false;
}
将一次又一次地打印测试,直到我停止程序。然而:
private void timer1_Tick(object sender, EventArgs e)
{
//MessageBox.Show("Test");
textBox1.Text += "t";
timer1.Enabled = false;
}
只需在文本框中添加一个“t”即可。
谁能告诉我为什么 MessageBox.Show 导致函数在禁用计时器之前返回?
最佳答案
调用 MessageBox.Show
会阻止 timer1_Tick
的执行,直到您关闭消息框,所以调用 set timer1.Enabled = false;
在那之后才会发生。因此,计时器仍在运行,因此每次计时器触发时,timer
_Tick` 仍会继续被调用,直到您在其中一个消息框上点击“确定”。
如果您想显示消息框以停止计时器再次触发,您需要的是:
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
MessageBox.Show("Test");
}
关于c# - .NET 定时器控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3306762/