朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
.Net フォームから戻り値を受け取る





アプリケーション専用のカスタマイズされたダイアログを表示したい時がある。
そんな時は、フォームをShowDialog()で表示して戻り値で判定するのも手である。
ダイアログ表示されるフォームのプロパティにDialogResultというのがあり、これに値を設定して、呼び出し側で判定します。
ここで注意が必要です。
カスタマイズされたフォーム上で独自に設定されたデータをどうやって呼び出した側で取り出すか。
呼び出した側のフォームにパブリックフィールドやプロパティを作って呼び出された側で設定するか、ファイルなどに保存して後で読みだすとか手があると思います。
データの受け渡しは、フォーム間でのデータの受け渡しを参考にしてください。

C#

呼び出される側

        private void btnOK_Click(object sender, EventArgs e)
        {
            //ここに入力されたデータをどこかに保存する処理を入れたりする。
            
            //OKボタンが押された時はDialogResult.OKを設定する。
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
            //ShowDialog()で表示されているので閉じないといけない
            this.Close();
        }
        private void btnCancel_Click(object sender, EventArgs e)
        {
            //キャンセルボタンが押された時はDialogResult.Cancelを設定する。
            this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            //ShowDialog()で表示されているので閉じないといけない
            this.Close();
        }

呼び出す側

                Form1 frm = new Form1();
                if (System.Windows.Forms.DialogResult.OK == frm.ShowDialog())
                {
                    //処理を記述する
                }

VB.NET

呼び出される側

Public Class Form2
    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
        'ここに入力されたデータをどこかに保存する処理を入れたりする。
        'OKボタンが押された時はDialogResult.OKを設定する。
        Me.DialogResult = System.Windows.Forms.DialogResult.OK
        'ShowDialog()で表示されているので閉じないといけない
        Me.Close()
    End Sub
    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        'キャンセルボタンが押された時はDialogResult.Cancelを設定する。
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        'ShowDialog()で表示されているので閉じないといけない
        Me.Close()
    End Sub
End Class

呼び出す側

        Dim frm As Form2 = New Form2()
        'OKボタンが押されたら
        If System.Windows.Forms.DialogResult.OK = frm.ShowDialog() Then
            '処理を記述する
        End If








良いやや良い普通やや悪い悪い
10 2 4 0 6

投稿日時評価コメント
2021/08/27 普通 ありがとうございます。
2016/05/26 良い わかりやすいです。