为按钮单击事件动态添加处理程序

本文关键字:添加 处理 程序 动态 事件 按钮 单击 | 更新日期: 2023-09-27 17:57:32

如何为每个生成的按钮的点击事件添加一个处理程序?

例如:

Button btn = new Button();
btn.ID = "delete_" + i.ToString();
btn.Click += degerate
{
     callFunction(i);
};

每当我尝试按下按钮时,它只会影响对上次插入的单击事件调用函数。有什么修复建议吗?

为按钮单击事件动态添加处理程序

如果每次添加点击处理程序时都会执行上面的代码,那么每次都会创建一个全新的按钮对象。因为它是一个全新的对象,所以它对附加在旧按钮上的单击处理程序一无所知。

在用于声明按钮的循环中,使用以下片段:

button.Click += new EventHandler(<funcName>);

不要忘记"funcName"必须与EventHandle委托匹配。

然后,所有按钮将共享相同的事件代码,但每个事件都绑定到自己的按钮。

您可以访问每个按钮的所有信息,方法是将发件人转换为您正在使用的特定对象类型,例如:

Button btn = (Button)sender;
btn.ID = <new value>;