未分類

C# フォームクローズ時に選択されたボタンの種類を判別する (2)

準備

(なし)

デザイン

1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にリストボックス (listBox1) を配置します。
3. プロジェクトにフォーム (Form2) を追加します。
- フォーム (Form2) にボタン (button1) を配置します。
- フォーム (Form2) にボタン (button2) を配置します。

サンプルコード (C#)

// 名前空間の追加
// (なし)

// コード (Form1)
private void button1_Click(object sender, EventArgs e)
{
  Form2 f2 = new Form2();
  f2.ShowDialog();
  
  if (f2.DialogResult == DialogResult.OK)
  {
    listBox1.Items.Add("OK");
  }
}

// コード (Form2)
private void button1_Click(object sender, EventArgs e)
{
  this.DialogResult = DialogResult.OK;
}

private void button2_Click(object sender, EventArgs e)
{
  this.DialogResult = DialogResult.Cancel;
}

解説

Form1 の button1 をクリックすると、Form2 が開きます。

Form2 の button1 をクリックすると、OK ボタン情報を設定してフォームを閉じます。button2 をクリックすると、Cancel ボタン情報を設定してフォームを閉じます。

Form1 では、Form2 のどのボタンがクリックされて終了したかを判別しています。

DialogResult.OK や DialogResult.Cancel を設定する DialogResult プロパティは、フォームインスタンス (this/Me) のプロパティです。同じプロパティがボタン自身にも存在しますので、間違えないように注意します。これらの設定をすると、Close メソッドを実行することなく、フォームも閉じられます。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

-未分類