アプリケーション専用のカスタマイズされたダイアログを表示したい時がある。
そんな時は、フォームを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
