C# 如何一次将相同的操作分配给多个按钮?

C# 如何一次将相同的操作分配给多个按钮?,c#,winforms,class,inheritance,C#,Winforms,Class,Inheritance,我正在处理一个WinForms应用程序,希望用户单击一个按钮,然后更改按钮的文本(将+1添加到计数器)。我有多个按钮,有三种方法,ClickMouseDown和MouseUp对于每一种方法都是非常低效的 所以我设置了一个类,但不知道如何将它分配给所有按钮 public class AddButton : Button { public int Count { get; set; } private void Button_Click(object sen

我正在处理一个WinForms应用程序,希望用户单击一个按钮,然后更改按钮的文本(将+1添加到计数器)。我有多个按钮,有三种方法,
Click
MouseDown
MouseUp
对于每一种方法都是非常低效的

所以我设置了一个类,但不知道如何将它分配给所有按钮

public class AddButton : Button
    {
        public int Count { get; set; }

        private void Button_Click(object sender, EventArgs e)
        {
            AddButton ab = (AddButton)sender;

            Count++;
            ab.Text = Count + " Added";
        }
    }

也许我也可以将所有按钮的
EventHandlers
链接到一个,但我不知道如何从那里开始,也不知道将代码放在哪里。这是Visual Studio项目的下载(如果需要)。

您可以尝试以下代码:

public class AddButton:Button
{
  public int Count { get; set; } = 0;

  public AddButton()
  {
    // After it's painted, set its text to current Counter
    this.Paint += (s, e) => this.Text = Count.ToString();
    this.Click += (s, e) => this.Text = (++Count).ToString(); 
  }
}
在您的项目中,更改按钮初始化就足够了:

Button button1 = new Button();


您是否尝试在构造函数中分配处理程序?@Wiktor Zychla我在哪里可以找到构造函数?这确实是三个问题。1) 选择所有控件后,将处理程序名称粘贴到属性/事件窗格中的事件字段中,即可将同一处理程序添加到多个控件中。-2) 但您也可以在如下代码中连接事件:control.eventname+=handlername。在一个循环中这样做,你就准备好了3) 您的类缺少构造函数。(至少需要一个无参数的,设计师才会高兴!)添加一个类似于so
public AddButton(){}
;把它放到你的课堂上。现在,您可以通过<将其添加到卷发中:
click+=按钮\u click当我现在点击一个按钮时,什么也没发生。我如何使点击一个按钮执行AddButton类中的“button\u Click”呢;但是您没有更新代码。在哪里可以找到初始化表单?它是Form1.Designer.cs文件吗?是:)您还可以将光标设置在变量上,并查看所有引用(在RighClick它之后或通过Shift+F12),然后找到它的装箱位置。Turczyn我很好地实现了这一点。除了更改文本,我还可以分配第二个功能吗?我已经试过了` this.Click+=(s,e)=>TotalCount.Text=addButton10.Count+AddButton11.Count´,但它说上下文不可用。我应该为此提出新问题还是将其保留在评论中?@hjknvcaesdbuihjase您应该首先搜索解决方案,该解决方案可能已经出现在本网站上。如果您找不到答案,请发布问题。
Button button1 = new AddButton();
// or
AddButton button1 = new AddButton();