C# 開発

C# コントロールを配列のように使う (2)

準備

(なし)

デザイン

1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にボタン (button2) を配置します。
3. フォーム (Form1) にボタン (button3) を配置します。

サンプルコード (C#)

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

// コード
private void Form1_Load(object sender, EventArgs e)
{
  foreach (Button item in Controls)
  {
    item.Click += new EventHandler(Num);
  }
}

private void Num(object sender, EventArgs e)
{
  if (sender.Equals(button1))
  {
    ((Button)sender).Text = "A";
  }
  
  if (sender.Equals(button2))
  {
    ((Button)sender).Text = "B";
  }
  
  if (sender.Equals(button3))
  {
    ((Button)sender).Text = "C";
  } 
}

解説

依然の VB にはコントロール配列というものがあり、コントロールにインデックスを付けてインデックスにより、処理を分岐できていました。それと同様の機能を実現します。

まず、全てのコマンドボタンに同一のイベントハンドらを定義しています。各ボタンがクリックされると、ボタンに応じてボタンのテキストを変更しています。但し、ボタン名の変更を行うと、ソースも変更する必要があります。

今回は、switch 文を使用せずに if 文を使用して一つ一つ判断しています。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

-C# 開発