winform程序,现有一个button,实例名为btn1,并且已经添加了一个Click事件,我现在想用反射的方法去触发这个事件,代码如下:
object f = btn1.GetType().GetEvent("Click").GetAddMethod().Invoke(btn1, new object[] { null });
但并未触发,也没报错,不知道哪里有问题?

解决方案 »

  1.   

    object f = btn1.GetType().GetEvent("Click").GetAddMethod().Invoke(btn1, new object[] { this, new EventArgs() });
      

  2.   

    是学习反射还是编程调用?如果是编程调用。abc点击事件函数(btn名字, EventArgs.Empty)
      

  3.   

    Type t = typeof(Button);
    object[] p = new object[1];
    MethodInfo m = t.GetMethod("OnClick", BindingFlags.NonPublic | indingFlags.Instance);
    p[0] = EventArgs.Empty;
    m.Invoke(yourbuttonname, p);
      

  4.   

    button1.GetType().GetMethod("PerformClick").Invoke(btn1, null );or GetMethod("OnClick"
    btn1.GetType().GetEvent("Click").GetAddMethod().Invoke(btn1, new object[] { null });这个是为事件追加方法