header
CodePanic! > C#.NET Tips > 今ここ

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

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

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;
}




zFCodePress C#vO~OTips


Copyright © 2008.07 - shougo suzaki
ゥRN\Agbvy[WB