この状況を処理する最も「エレガントな」方法の 1 つは、辞書を使用することです。このアプローチにより、長い switch ステートメントが不要になります。
まず、フォーム デザイナーを使用して、すべてのボタンの Tag プロパティを一意の文字列値に設定します。
button1.Tag = "B1"
button2.Tag = "B2"
button3.Tag = "B3"
button4.Tag = "B4"
....
ボタンクリックイベントハンドラーを同じメソッドに設定します
button1.Click = "button_click"
button2.Click = "button_click"
button3.Click = "button_click"
button4.Click = "button_click"
....
コード ウィンドウで、フォーム内でディクショナリをグローバルに宣言します
private Dictionary<string, Action> buttonActions;
Form_Load イベントでディクショナリを初期化する
buttonActions = new Dictionary<string, Action>();
buttonActions.Add("B1", button1Action);
buttonActions.Add("B2", button2Action);
buttonActions.Add("B3", button3Action);
buttonActions.Add("B4", button4Action);
.....
button_click イベント ハンドラーで、次のコードを記述する必要があります。
private void button_click(object sender, System.EventArgs e)
{
var btnKey = ((Button)sender).Tag.ToString();
if(buttonActions.ContainsKey(btnKey))
buttonActions[btnKey].Invoke();
}
もちろん、ボタン アクションごとに特定のコードを記述する必要があります。
private void button1Action()
{ ... }
private void button2Action()
{ ... }
private void button3Action()
{ ... }
private void button4Action()
{ ... }