MDI メインフォームがあります。その上でフォームをホストし、閉じる前にメッセージボックスを表示したい(変更を保存するかどうかをユーザーに尋ねる)。
ここまでは順調ですが、MDI メイン フォームを閉じても MDI 子の FormClosing イベントが発生しないことがわかりました。MDI メインの FormClosing イベント (発生します) でMdiChild .Close() を呼び出すだけだと考えました。この継ぎ目は機能しますが、問題が発生します...
私が表示するメッセージボックスで、変更を保存して閉じるのをキャンセルするのではなく、変更を保存するようにユーザーに提案します。通常はこれで問題なく動作しますが、MDI メインの FormClosing イベントをキャンセルする方法が見つからないようです。これを行うエレガントな方法はありますか?
編集:MDIメインのFormClosingイベントでキャッチされる例外をスローすることでこれを解決しました(ユーザーが閉じる手順をキャンセルすることを決定したとき)。このようにして、いつ MDI メインの FormClosing イベントをキャンセルしなければならないかがわかります。この継ぎ目は正常に機能します...しかし、この「hax」がこれを行う唯一の方法であるとは信じられません。きっともっと良い方法がありますか?