[Windows] 終了前に確認ダイアログを表示する

アプリケーションを終了させる場合、ユーザが誤って操作してしまうことを考慮して、一度確認ダイアログを表示する方が親切です。ここでは、アプリケーションを終了させる前に確認ダイアログを表示する実装をします。
広 告
目次
前提条件
- 「保存機能の有効・無効を切り替える」が実施済であること
動作確認環境
- Windows10 64bit
- Visual Studio Express 2015 for Windows Desktop
1. 終了前に確認ダイアログを表示する
まずはアプリケーションが終了する前に実行されるメソッドを実装します。
デザインウィンドウを表示します。

「Form1」を選択した状態でプロパティウィンドウで「イベント」アイコンをクリックした後、表示されているリストの中から「FormClosing」を探します。これはアプリケーションが終了する直前に実行されるイベントです。ここをダブルクリックをするとForm1_FormClosing()
メソッドが作成されます。ここに終了確認ダイアログを表示する処理を実装します。
確認ダイアログを表示するためにはMessageBox.Show()
メソッドを使用します。各引数に設定する値は以下のとおりです。
第一引数 | ダイアログメッセージ |
第二引数 | ダイアログタイトル |
第三引数 | 表示するボタンの種類 |
第四引数 | 表示するアイコン |
ダイアログに表示するボタンは「OK」「キャンセル」の2つにしたいため、MessageBoxButtons.OkCancel
を設定します。アイコンは警告アイコンを表示させたいため、MessageBoxIcon.Warning
を設定します。以上を踏まえ、Form1_FormClosing()
メソッドには以下の実装をします。
終了時に確認ダイアログを表示する
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogResult result = MessageBox.Show("編集内容を破棄しますか?", ApplicationName, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (DialogResult.OK != result) { // 「OK」以外が選択された場合は // アプリケーション終了をキャンセルする e.Cancel = true; } }
確認ダイアログで「OK」ボタン以外が押された場合は、終了をキャンセルしています。
以上がアプリケーション終了前に確認ダイアログを表示する実装になります。
2. プログラムを実行して結果を確認する
これまでの手順の実行結果は以下の通りです。

「ファイル」メニューの「終了」メニューをクリックするか、右上の「×」アイコンをクリックすると終了確認ダイアログが表示されることが確認できます。
終了確認ダイアログで「キャンセル」をクリックすると終了が中断され、「OK」ボタンをクリックすると、そのまま終了することが確認できます。
次は「未編集の場合は確認ダイアログを表示しない」です。