VB.NETフォームを閉じたボタンを取得する

スポンサーリンク

フォームを閉じたボタンを取得するには、DialogResult プロパティを各々のボタンに設定します。メインとなるフォームから、別のフォームをサブ画面として表示した場合に使えます。サブ画面での入力内容を、適用するかどうかを決定付けることができるからです。例えば、サブ画面で [キャンセル] が選択された場合は適用しないが、[OK] が選択された時は適用する場合などです。

DialogResult プロパティを設定したボタンは、Close メソッドを呼ばなくても閉じられることに注意してください。以下の例では、メインフォーム から サブフォーム を開き、サブフォームで [OK] ボタンを選択した時のみ、メッセージボックスにその旨を表示します。

サンプルコード

以下にサンプルコードを示します。

VB.NET 全般
' メイン フォーム側
Public Class FormMain : Inherits System.Windows.Forms.Form

   Windows フォーム デザイナで生成されたコード 

    ' btnShowSub をクリックした時
    Private Sub btnShowSub_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnShowSub.Click
        ' FormSub の新しいインスタンスを生成する
        Dim cFormSub As New FormSub()

        ' FormSub を表示して、btnOK を選択して閉じた時 [OK] となることを確認する
        If cFormSub.ShowDialog() = DialogResult.OK Then
            MessageBox.Show("FormSub で [OK] ボタンが選択されました")
        End If

        ' 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照)
        cFormSub.Dispose()
    End Sub

End Class
VB.NET 全般
' サブ フォーム側
Public Class FormSub : Inherits System.Windows.Forms.Form

   Windows フォーム デザイナで生成されたコード 

    ' ロード時にボタンの役割を設定 (通常は、デザイナで初期設定するので必要ありません)
    Private Sub FormSub_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.btnOK.DialogResult = DialogResult.OK
    End Sub

End Class

関連するリファレンス

準備中です。

スポンサーリンク