1
私はOnFormClosing
のオーバーライドを定義した単純なWinFormアプリケーションを持っています。終了確認を求めて、SQL接続を閉じることができます。私は二度ポップアップし、「本当に-終了」-dialogフォームを閉じたときに残念なことに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
私のコードで他の問題があり、問題が修正されました。本当に終了するダイアログは、私がどこから呼び出しても、2回ポップアップします。 – farosch
コールスタックを読み取る方法はあまりよく分かりませんが、Application.exit()メソッドから2回目に呼び出されると思います。 – farosch