C#でWindowsフォームアプリケーションで、フォームをダイアログボックスとして表示した時の戻り値を取得、設定する方法を紹介します。
本記事ではVisual Studioで作成した、Windowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。

目次
ダイアログフォームの戻り値を取得する
ダイアログフォームの戻り値は、System.Windows.Forms名前空間にあるFormクラスのShowDialogメソッドで表示したフォームから取得します。
ダイアログフォームの戻り値の取得
| 1 2 3 4 5 6 7 | // フォームのインスタンスを生成 Form form = new Form(); form.Text = "ダイアログフォーム"; // フォームをダイアログボックスとして表示 DialogResult dialogResult = form.ShowDialog(this); Console.WriteLine(dialogResult); | 
ShowDialogメソッドはSystem.Windows.Forms名前空間にあるDialogResult列挙型を返します。
DialogResult列挙型のメンバー一覧
DialogResult列挙型には次のメンバー(フィールド)が用意されています。
| 名前 | 値 | 説明 | 
|---|---|---|
| None | 0 | ダイアログボックスの結果がなし(Nothing)であることを示します。 | 
| OK | 1 | ダイアログボックスの結果が「OK」であることを示します。 | 
| Cancel | 2 | ダイアログボックスの結果が「キャンセル」であることを示します。 | 
| Abort | 3 | ダイアログボックスの結果が「中止」であることを示します。 | 
| Retry | 4 | ダイアログボックスの結果が「再試行」であることを示します。 | 
| Ignore | 5 | ダイアログボックスの結果が「無視」であることを示します。 | 
| Yes | 6 | ダイアログボックスの結果が「はい」であることを示します。 | 
| No | 7 | ダイアログボックスの結果が「いいえ」であることを示します。 | 
メッセージボックスの戻り値の取得
DialogResult列挙型は、System.Windows.Forms名前空間にあるMessageBoxクラスの戻り値を取得する際にも使用します。
| 1 2 3 4 5 6 7 8 9 10 11 | // メッセージボックスを表示する // メッセージボックスのパラメーター string text = "続行する場合は [OK] をクリックしてください。"; string caption = "メッセージボックスの戻り値の取得"; MessageBoxButtons button = MessageBoxButtons.OKCancel; MessageBoxIcon icon = MessageBoxIcon.Question; MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button2; // メッセージボックスを表示する DialogResult dialogResult = MessageBox.Show(this, text, caption, button, icon, defaultButton); Console.WriteLine(dialogResult); | 

ダイアログフォームの戻り値を設定する
ダイアログフォームの戻り値を設定する時は、ダイアログボックスとして表示したFormクラスのDialogResultプロパティに、「OK」や「Cancel」など、DialogResult列挙型のメンバーを指定します。
ダイアロフォームを表示して戻り値を設定するサンプルプログラムを作成します。
ダイアログフォームのデザイン
ダイアログフォームを以下のように作成します。

フォームには、クリックした時にDialogResult.OKを設定してフォームを閉じるbutton1と、クリックした時にDialogResult.Cancelを設定してフォームを閉じるbutton2を配置します。
ダイアログフォームのコード
ボタンクリック時のイベントメソッドを実装します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | using System; using System.Windows.Forms; namespace WindowsFormsApp1 {     public partial class DialogForm : Form     {         // コンストラクタ         public DialogForm()         {             InitializeComponent();         }         // OKボタンクリック         private void button1_Click(object sender, EventArgs e)         {             this.DialogResult = DialogResult.OK;             this.Close();         }         // キャンセルボタンクリック         private void button2_Click(object sender, EventArgs e)         {             this.DialogResult = DialogResult.Cancel;             this.Close();         }     } } | 
ダイアログフォームを表示するフォームのコード
上記のダイアログフォームを表示するフォームのコードです。
| 1 2 3 4 5 6 7 | // ダイアログフォームのインスタンスを生成する DialogForm dialogForm = new DialogForm(); // ダイアログフォームを表示する DialogResult dialogResult = dialogForm.ShowDialog(this); // 戻り値をメッセージボックス表示する MessageBox.Show(dialogResult.ToString()); | 
上記のコードをボタンクリックのイベントメソッドなどに記述します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | using System; using System.Windows.Forms; namespace WindowsFormsApp1 {     public partial class Form1 : Form     {         // コンストラクタ         public Form1()         {             InitializeComponent();         }         // ダイアログフォームを表示する         private void button1_Click(object sender, EventArgs e)         {             try             {                 // ダイアログフォームのインスタンスを生成する                 DialogForm dialogForm = new DialogForm();                 // ダイアログフォームを表示する                 DialogResult dialogResult = dialogForm.ShowDialog(this);                 // 戻り値をメッセージボックス表示する                 MessageBox.Show(dialogResult.ToString());             }             catch (Exception ex)             {                 MessageBox.Show(ex.Message);             }         }     } } | 
ダイアログフォームの表示と戻り値の設定~取得
サンプルプログラムを実行してダイアログフォームを表示します。

ダイアログフォームのボタンをクリックします。
「OK」ボタンをクリックすると、OKが表示されます。

「キャンセル」ボタンをクリックすると、Cancelが表示されます。
