为多个按钮设置单个事件处理程序

时间:2015-01-29 17:51:54

标签: c#

嗨,我几乎是C#的新手,我通常使用c ++编程,所以请耐心等待。我正在编写一个应用程序,我有10个按钮,其中5个实际上做同样的事情。目前我有5个事件处理程序做同样的事情。如何使用if语句将其更改为单个偶数处理程序。另外我的问题是,即使每个按钮的方法都相同,我也会有一些小的差异,如下所述:

按钮1复制按钮5 按钮2与按钮6相配 按钮3与按钮7相比等等

我如何处理每种情况下的这种微小差异?

非常感谢你

2 个答案:

答案 0 :(得分:2)

button.SomeEvent += SomeHandler

void SomeHandler(object sender, EventArgs e)
{
   Button b = (Button)sender; //get the specific button that was pressed
   ...
}

使用+ =运算符向事件添加方法,只需添加相同的方法。

答案 1 :(得分:0)

您可以将它们全部设置为相同的处理程序,获取调用它的按钮,检查if语句中的id并执行不同的操作 - 或者 - 您可以使用看起来像这样的更常见的重构: / p>

void Button1Action(object sender, EventArgs e)
{

   // do stuff for button 1 here

   SharedCode();
}

void Button2Action(object sender, EventArgs e)
{

   // do stuff for button 2 here

   SharedCode();
}

void Button3Action(object sender, EventArgs e)
{

   // do stuff for button 3 here

   SharedCode();
}


void Button4Action(object sender, EventArgs e)
{

   // do stuff for button 4 here

   SharedCode();
}

void SharedCode()
{

    // do stuff for all buttons

}