今天在社区碰到了一个比较有意思的问题,将button1的Click事件与button2的Click事件在不知道方法名的情况下如何使用同一个处理方法,我之前已经解答了一个类似的问题,是要用到委托列表类实现的,上代码:
private void Form1_Load(object sender, EventArgs e)
{
Button btn1 = new Button();
btn1.Text = "button1";
btn1.Click += new EventHandler(delegate(object s, EventArgs e2) { MessageBox.Show(s.ToString()); });
btn1.Name = "btn1";
btn1.Location = new Point(10, 10);
this.Controls.Add(btn1);
Button btn2 = new Button();
btn2.Text = "button2";
btn2.Name = "btn2";
btn2.Location = new Point(10, 30);
Type t = btn1.GetType();
PropertyInfo pi = t.GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);//获取button1的事件属性
EventHandlerList ehl = (EventHandlerList)pi.GetValue(btn1, null);//获取button1的委托列表
FieldInfo fieldInfo = (typeof(Control)).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
Delegate d = ehl[fieldInfo.GetValue(null)];
btn2.Click += (EventHandler)d;
this.Controls.Add(btn2);
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ojlovecd/archive/2008/09/05/2886587.aspx

浙公网安备 33010602011771号