Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FormClosing()事件已加载两次_C#_Formclosing - Fatal编程技术网

C# FormClosing()事件已加载两次

C# FormClosing()事件已加载两次,c#,formclosing,C#,Formclosing,我想在关闭表单之前显示一个消息框来确认退出。因此,将创建一个FormClosing事件 private void Form_Main_FormClosing(object sender, FormClosingEventArgs e) { //nothing here for now } 我已将MessageBox显示了两次。调试工具显示,代码以某种方式在FormClosing()上运行了两次。即使在上面的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中的幽灵!!!!!!我搜索了申请。请在之前退出。它不存在于整个解决方案中。