変更した内容を破棄するかどうか確認し、閉じるのをキャンセルされた場合に現状のフォームをそのまま開いた状態にしておきたい場合等、本当にフォームを閉じて良いかを確認したいことがある。

これをVB.NETで実装する方法について説明する。
対象となるフォームのFormClosingイベントを利用して実装する。

以下、サンプル。
Private Sub MainForm_FormClosing( _
 ByVal sender As Object, ByVal e As _
 System.Windows.Forms.FormClosingEventArgs) _
 Handles Me.FormClosing

 Dim Result As Windows.Forms.DialogResult
 Result = MessageBox.Show("終了しますがよろしいですか?", _
  "終了確認", MessageBoxButtons.YesNoCancel)

 If Result = Windows.Forms.DialogResult.No Or _
  Result = Windows.Forms.DialogResult.Cancel Then
  e.Cancel = True
 End If
End Sub

【補足事項】
・画面の内容が変更されたかの検知は、別途、実装する必要がある。
・Closingイベントは、フォームを閉じる際に発生する。
 →Me.Close()等を行ったタイミングで実行される。
・e.Cancel = Trueとすることで、キャンセルできる。