C# WinForms。窗体结束后计时器不停止。关闭
我有一个上下文应用程序,可以创建新的C# WinForms。窗体结束后计时器不停止。关闭,c#,forms,winforms,timer,C#,Forms,Winforms,Timer,我有一个上下文应用程序,可以创建新的表单,向用户显示一些信息。此用户可以为此目的使用按钮关闭表单。然而,90秒后表单会自动关闭,但会首先弹出一个消息框让用户知道 现在我很难知道为什么在表单第一次关闭后,MessageBox会每隔90秒再次弹出一次 我有一个Windows.Forms.Timer用于90秒自动关闭并使用Form.close关闭它。我将表格添加到口述稿中,其中包含一些管理人员的ID 创建表单: MainForm myform = new MainForm(); myform.plat
表单
,向用户显示一些信息。此用户可以为此目的使用按钮关闭表单。然而,90秒后表单会自动关闭,但会首先弹出一个消息框让用户知道
现在我很难知道为什么在表单第一次关闭后,MessageBox会每隔90秒再次弹出一次
我有一个Windows.Forms.Timer用于90秒自动关闭并使用Form.close关闭它。我将表格添加到口述稿中,其中包含一些管理人员的ID
创建表单:
MainForm myform = new MainForm();
myform.plate = eventData.iPlate;
myform.tag = eventData.iTag;
formulario.image = eventData.Image;
formulario.PopulateMyFields();
ActivePopUps.Add(eventData.ide, myform);
myform.Show();
现在使用字典关闭它们
foreach (var popup in ActivePopUps)
{
if (popup.Key == eventData.some_id)
{
try
{
popup.Value.Close();
}
catch { }
ActivePopUps.Remove(popup.Key);
}
}
以及在MainForm中创建的计时器
mytimer = new System.Windows.Forms.Timer();
timer_mytimer .Interval = Properties.Settings.Default.ClosingTime; // 90000
mytimer.Tick+=new EventHandler(mytimerEvent);
mytimer.Enabled = true;
mytimer.Start();
和实际的计时器事件
private void mytimerEvent(object sender, EventArgs e)
{
MessageBox.Show("Hey ! Closing this one");
this.Close();
}
我相信我可以在调用.Close()之前停止计时器并使其停止,但我的问题是。。。。Close不应该这么做吗?甚至调用.Dispose()?为什么计时器一直在工作,还有什么能在后台保存下来?我只是想澄清一下。Sinatr在他的评论中提供了正确的答案,因此问题得到了完美的回答,我的代码运行良好 创建计时器时,我缺少以下内容:
this.mytimer = new System.Windows.Forms.Timer(this.components)
通过这样做,计时器将链接到表单,以便在表单调用Close()时释放它。提示:如果使用表单设计器添加计时器,您将注意到源代码中的差异,这一行:
this.timer1=new System.Windows.Forms.timer(this.components)
这个。Close
表示窗体,而不是计时器。您可以从代码实例化计时器,因此它是一个独立于表单的对象以在关闭窗体之前清除计时器。您也可以将其放入表单\u Closed
事件中。@Sinatr谢谢。太美了:)