C# 为多个按钮设置单个事件处理程序 对C语言我是新手,我通常用C++编程,所以请耐心等待。我正在编写一个应用程序,我有10个按钮,其中5个实际上在做同样的事情。目前我有5个事件处理程序做同样的事情。如何使用if语句将其更改为单个偶数处理程序。此外,我的问题是,尽管每个按钮的方法都相同,但它们之间存在一些小差异,如下所述:

C# 为多个按钮设置单个事件处理程序 对C语言我是新手,我通常用C++编程,所以请耐心等待。我正在编写一个应用程序,我有10个按钮,其中5个实际上在做同样的事情。目前我有5个事件处理程序做同样的事情。如何使用if语句将其更改为单个偶数处理程序。此外,我的问题是,尽管每个按钮的方法都相同,但它们之间存在一些小差异,如下所述:,c#,C#,按钮1与按钮5共用 按钮2与按钮6相比 按钮3与按钮7比较,依此类推 在每种情况下,我如何处理这个小差异 非常感谢 button.SomeEvent += SomeHandler void SomeHandler(object sender, EventArgs e) { Button b = (Button)sender; //get the specific button that was pressed ... } 使用+=运算符向事件添加方法,只需添加相同的方法。您可以将

按钮1与按钮5共用 按钮2与按钮6相比 按钮3与按钮7比较,依此类推

在每种情况下,我如何处理这个小差异

非常感谢

button.SomeEvent += SomeHandler

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

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

您可以将它们全部设置为同一个处理程序,获取调用它的按钮,检查if语句中的id并执行不同的操作,或者您可以使用更常见的重构,如下所示:

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

}

WPF?Winform?如果WPF可能您应该查看MVVM和ICommand,将每个按钮绑定到同一个命令,然后只传递一个CommandParameter以从您来的witch按钮中知道。我会将此更改为在设计器中声明/分配事件,而不是在后面的代码中,但它将产生相同的结果。@JoeBrunscheon-为什么?如果没有区别,为什么会重要?我也不明白为什么重要。有区别,但连接事件处理程序的最终结果是一样的。设计器中的事件处理程序允许您通过双击按钮导航到代码隐藏中的那些实现,并在分配给事件的实际事件处理程序的设计器事件属性字段中提供正确的报告。如果仅在代码隐藏中分配事件处理程序,则设计器中没有指示事件处理程序已连接到每个按钮的Button_Click事件,并且导航到该处理程序不起作用。我不会单击设计器中的按钮,因为如果它没有事件,它将创建一个。