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が表示されます。