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

準備

(なし)

デザイン

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

サンプルコード (C#)

// 名前空間の追加
using System.Collections;

// メンバー変数の宣言
ArrayList al = new ArrayList();

// コード
private void Form1_Load(object sender, EventArgs e)
{
  al.Add(button1);
  al.Add(button2);
  al.Add(button3);
  
  for (int i = 0; i < al.Count; i++)
  {
    ((Button)al[i]).Click += new EventHandler(Num);
  }
}

private void Num(object sender, EventArgs e)
{
  switch (al.IndexOf((Button)sender))
  {
    case 0: ((Button)sender).Text = "A"; break;
    case 1: ((Button)sender).Text = "B"; break;
    case 2: ((Button)sender).Text = "C"; break;
  }
}

解説

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

まず、ボタンコントロールを代入する ArrayList を作成します。この ArrayList のインデックス番号を使って、ボタンコントロールを認識していきます。

ArrayList からクリックされたボタンのインデックス番号を取得するには、IndexOf メソッドを使います。クリックされたボタンは Sender に入っていますので、これを利用してボタンのインデックス番号を取得します。

あとは、インデックスに対応した処理を実行するだけです。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

Follow me!