1
我有一个简单的WinForm应用程序,我已经为OnFormClosing
定义了覆盖,以便能够请求退出确认并关闭sql连接。 它看起来像这样:从MenuItem触发OnFormClosing()
protected override void OnFormClosing(FormClosingEventArgs e)
{
switch (MessageBox.Show(this, "Really quit " + Application.ProductName + "?",
Application.ProductName, MessageBoxButtons.YesNo,
MessageBoxIcon.Exclamation))
{
case DialogResult.Yes:
con.Close();
Debug.WriteLine("Connection Closed");
Debug.WriteLine("Exiting Application");
Application.Exit();
break;
default:
break;
}
}
不幸的是,当我关闭表单中的“真,戒” - 对话两次弹出。 这是为什么呢?
将断点在OnFormClosing(),然后点击第一个X键和后来退出菜单,检查这两个调用的调用堆栈,并从所有(这方法参见( s))OnFormClosing()方法的调用即将到来。 – VS1
我的代码中存在另一个问题,修复了这个问题。无论我在哪里调用它,真正退出对话框都会弹出两次。 – farosch
我不太清楚如何读取调用堆栈,但我认为第二次从Application.exit()方法调用 – farosch