フォームで押されたボタンの種類を表示元で取得する

下図のようなフォームの表示を例に
フォームで押されたボタンの種類を表示元で取得するサンプルを示します。

Form1よりForm2を呼び出し、
Form2が閉じられた際に
Form2で押されたボタンの種類を
Form1側(表示元)で取得します。

例)

    Form1
    ┏━━━━━━━━━━━┓
    ┃                      ┃
    ┃                      ┃
    ┃┏━━━━┓          ┃
    ┃┃button1 ┃          ┃
    ┃┗━━━━┛          ┃
    ┗━━━━━━━━━━━┛
    button1押下でForm2を表示

            ↓Form2を表示

    Form2
    ┏━━━━━━━━━━━━┓
    ┃                        ┃
    ┃                        ┃
    ┃┏━━━┓  ┏━━━━┓┃
    ┃┃  OK  ┃  ┃ Cancel ┃┃
    ┃┗━━━┛  ┗━━━━┛┃
    ┗━━━━━━━━━━━━┛
    いずれかのボタン押下で閉じる。

【解説】
呼び出し元では、フォームが閉じられた後で
DialogResultプロパティーの値を参照することで
何のボタンが押されたのかを判断します。

呼び先では、各ボタンのDialogResultプロパティーに
DialogResult列挙型の値をあらかじめ設定しておくことで
呼び出し元に最後に押されたボタンの種類を通知します。

//-------------------------------------
// Form1のソース
//-------------------------------------
private void button1_Click(object sender, System.EventArgs e)
{
    Form2 f2 = new Form2();

    // Form2をモーダル表示
    f2.ShowDialog();

    // Form2が閉じられた後、どのボタンが押されたのか判定
    switch( f2.DialogResult )
    {
        case DialogResult.OK:
            MessageBox.Show( "OK", "押されたボタンは" );
            break;
        case DialogResult.Cancel:
            MessageBox.Show( "Cancel", "押されたボタンは" );
            break;
    }
}

//-------------------------------------
// Form2のソース
//-------------------------------------
private void Form2_Load(object sender, System.EventArgs e)
{
    button1.DialogResult = DialogResult.OK;
    button2.DialogResult = DialogResult.Cancel;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)