我需要在表单加载10秒后显示一条消息。 我使用以下代码
private void Form1_Load(object sender, EventArgs e)
{
SetTimeInterval();
}
System.Windows.Forms.Timer MyTimer = new System.Windows.Forms.Timer();
public void SetTimeInterval()
{
MyTimer.Interval = ( 10 * 1000);
MyTimer.Tick += new EventHandler(TimerEventProcessor);
MyTimer.Start();
}
void TimerEventProcessor(Object myObject,EventArgs myEventArgs)
{
MessageBox.Show("TIME UP");
MyTimer.Stop();
MyTimer.Enabled = false;
}
尝试使用MyTimer.Stop()和MyTimer.Enabled = false,但是消息框每10秒显示一次。如何在第一次实例后停止它?
答案 0 :(得分:8)
您的问题是MessageBox.Show()
是阻止电话。因此,在您关闭 MyTimer.Stop()
后,MessageBox
仅被称为。
因此,在关闭MessageBox
之前,每10秒会弹出一个新的。简单的解决方案是更改调用顺序:
void TimerEventProcessor(Object myObject,EventArgs myEventArgs)
{
MyTimer.Stop();
MyTimer.Enabled = false;
MessageBox.Show("TIME UP");
}
因此,只要您在显示消息框之前进入事件处理程序,计时器就会停止。
答案 1 :(得分:-1)
我会建议这种方法 转到theform.designer.cs 写这个代码
this.timer1.Enabled = true;
this.timer1.Interval = 10000;
并在你的.cs文件中执行此操作
private void timer1_Tick(object sender, EventArgs e)
{
MessageBox.Show("msg");
}
对我来说非常适合。