处理这种情况的最“优雅”的方法之一是使用字典。这种方法不需要冗长的 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 事件中初始化 Dictionary
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()
{ ... }