请教:C#中,如何判断某个控件的事件赋予了处理函数?
如:如何判断界面上的Button1 实现了Click事件?

解决方案 »

  1.   

    比如按钮名字叫button1PropertyInfo pi = (typeof(Button)).GetProperty("Events",BindingFlags.Instance | BindingFlags.NonPublic);
    EventHandlerList ehl = pi.GetValue(this.button1,null) as EventHandlerList; FieldInfo fi = (typeof(Control)).GetField("EventClick",BindingFlags.Static | BindingFlags.NonPublic);
    object key = fi.GetValue(null);
    Delegate d = ehl[key];
    try
    {
    this.label1.Text="找到以下click事件:";
    foreach(Delegate de in d.GetInvocationList())
    this.label1.Text+=de.Method.Name;
    }
    catch
    {
    this.label1.Text="没有任何click事件";
    }
      

  2.   

    楼上的正确,不过改进一下。
    if(d==null)
    {
    this.label1.Text="没有任何click事件";
    }
    else
    {
    this.label1.Text=d.Method.Name;
    }