我想做这样的事情:
Button btn1 = new Button();
btn1.Click += new EventHandler(btn1_Click);
Button btn2 = new Button();
// Take whatever event got assigned to btn1 and assign it to btn2.
btn2.Click += btn1.Click; // The compiler says no...
其中btn1_Click已在类中定义:
void btn1_Click(object sender, EventArgs e)
{
//
}
当然,这不会编译(“事件'System.Windows.Forms.Control.Click'只能出现在+ =或 - =”的左侧)。有没有办法从一个控件获取事件处理程序并在运行时将其分配给另一个控件?如果那是不可能的,重复事件处理程序并在运行时将其分配给另一个控件吗?
有几点:我已经用谷歌搜索了一段时间,但却发现没办法做到这一点。大多数尝试过的方法都涉及反射,因此如果您阅读我的问题并认为答案非常明显,请首先尝试在Visual Studio中编译代码。或者,如果答案确实非常明显,请随时给我打电话。谢谢,我真的很期待看到这是否可行。
我知道我可以这样做:
btn2.Click += new EventHandler(btn1_Click);
这不是我在这里寻找的东西。
这也不是我想要的:
EventHandler handy = new EventHandler(btn1_Click);
Button btn1 = new Button();
btn1.Click += handy;
Button btn2 = new Button();
btn2.Click += handy;