2011-11-11 17 views
1

フォームのクローズをキャンセルするケースがあるので、フォームのクローズを許可するかどうかを判断するために、OnClosingでコードを取得しました。C#WinFormsでOnClosingで[キャンセル]をtrueに設定している人はどうすればわかりますか?

問題は、私のアプリケーションのどこかでCancelEventArgs.Cancelがtrueに設定されているため、キャンセルがOnClosing関数の途中でtrueになるということです。私の人生では、どこが起こっているのか分かりません。

OnClosingのコールスタックを見ると、いくつかの外部コードと私のApplication.Runを除いて何もありません。

質問があるので、どのように設定しているのですか?

+0

いくつかのコードを投稿できますか? –

答えて

2

OnClosingと入力するとe.Cancelがtrueと表示されますか?

Validate方法が失敗したフォームは、あなたが任意の検証コントロールを持っている場合は、このための一つの可能​​な理由がある

...

反射鏡で見てください、あなたはあなたが

private void WmClose(ref Message m) 
{ 
    blah.... 
    e.Cancel = !base.Validate(true); 
    blah....  
+0

はい。 1つの回避策は、基本メソッドを呼び出す前にOnFormClosingをオーバーライドし、強制的にe.Cancel = falseにすることです。 –

+0

私はただCancelをfalseに設定することができますが、それは問題を解決していません。妥当性をチェックしてみましょう......しかし正しいです、e.CancelはOnClosingに入ったときに真です。 –

0

を実行することができます見ることができますアプリケーションをデバッグモードで実行し、すべてのCancel = trueステートメントにブレークポイントを設定します。

アプリケーションは、呼び出されたステートメントで停止し、アプリケーションがどこにあるかを確認できます。

関連する問題