C# FormClosing()事件已加载两次
我想在关闭表单之前显示一个消息框来确认退出。因此,将创建一个FormClosing事件C# FormClosing()事件已加载两次,c#,formclosing,C#,Formclosing,我想在关闭表单之前显示一个消息框来确认退出。因此,将创建一个FormClosing事件 private void Form_Main_FormClosing(object sender, FormClosingEventArgs e) { //nothing here for now } 我已将MessageBox显示了两次。调试工具显示,代码以某种方式在FormClosing()上运行了两次。即使在上面的FormClosing()中没有任何内容,也会发生这种情况。我在我
private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
{
//nothing here for now
}
我已将MessageBox显示了两次。调试工具显示,代码以某种方式在FormClosing()上运行了两次。即使在上面的FormClosing()中没有任何内容,也会发生这种情况。我在我的整个代码中搜索了FormClosing(),并且只有一个地方订阅了它。我在另外两个项目中使用了相同的FormClosing(),但这并没有发生。谁能给我一个指针吗?这对我来说毫无意义。最有可能的“猜测”是你订阅了两次活动。如果使用设计器,请记住检查自动生成的设计器代码 如果您在事件上设置了断点,您还可以启动调用堆栈(http://msdn.microsoft.com/en-us/library/a3694ts5.aspx -调试/窗口/调用堆栈),您可以看到执行了哪些代码以到达您所在的位置 直接调用事件处理程序是完全可能的(但不太可能是错误地调用);但是查看调用堆栈有助于找到它
最后-确保在处理关闭事件时没有调用
应用程序。退出或类似操作-我认为这可能会触发第二次触发。在FormClosing事件处理程序中不能调用Close和Dispose方法
表格结束代码应为:
private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("EXIT?", "Exit Program", MessageBoxButtons.YesNo);
if (result != DialogResult.Yes)
{
e.Cancel = true;
}
}
好的,我知道了。我有:
初始化组件()
在两个地方。删除其中一个后,事情会按其应有的方式进行。您是否尝试重新构建解决方案?堆栈跟踪说明了它是如何到达那里的?请发布您的代码。如果不是代码,那么至少骨架?我已经重建了它。同样的事情也会发生。它不断重复FormClosing()两次。对我来说毫无意义。搜索Form\u Main\u FormClosing
以检查它是否订阅了两次。好的,为了方便起见,我在这里上载了我的代码:当我使用This.Dispose()时,它会加载两次。当我使用此.Close()时,它从不关闭。现在这个谜把我吓坏了。以前从未发生过。我还有另外两个表单应用程序使用相同的方法,它们工作得很好。救命啊!!!!!!!!Visual Studio中的幽灵!!!!!!我搜索了申请。请在之前退出。它不存在于整个解决方案中。