另一个好方法是每个按钮都有自己的处理程序。通常,当您在设计器中双击按钮时,Visual Studio 会生成自己的单击处理程序。
private void ButtonPlus_Click(object sender, EventArgs e)
{
// Do something when "+" pressed
}
private void ButtonMinus_Click(object sender, EventArgs e)
{
// Do something when "-" pressed
}
您可以手动将事件处理程序添加到构造函数中的按钮(如果您使用 Visual Studio 生成它 - Visual Studio 会自动将生成的事件处理程序添加到按钮)
this.ButtonPlus.Click += ButtonPlus_Click;
this.ButtonMinus.Click += ButtonMinus_Click;
通过上述方法,您将为每个操作拥有自己的功能,这有助于轻松/更快地维护您的代码库小投标。
但是,如果您只想对所有按钮使用一个事件处理程序,则可以使用Button.Tag 属性。
为每个操作创建方法
private void ExecutePlus()
{
// Do something when "+" pressed
}
private void ExecuteMinus()
{
// Do something when "+" pressed
}
然后在构造函数中将所有操作保存在对应按钮的.Tag属性中。
this.ButtonPlus.Tag = ExecutePlus;
this.ButtonMinus.Tag = ExecuteMinus;
// add "general" event handler
var buttons = new[] { this.ButtonPlus, this.ButtonMinus };
foreach(var button in buttons)
{
button.Click += Button_Click;
}
然后创建“通用”点击处理程序
private void Button_Click(object sender, EventArgs e)
{
var button = (Button)sender;
Action execute = (Action)button.Tag;
execute();
}
每个操作仍然有单独的方法,但所有按钮只有一个事件处理程序