WINFORM中比如Form里有Button1和Label1两个控件,我希望点击Button1后在Button1的Click事件代码中调用Label1的Click事件,如何实现?

解决方案 »

  1.   


    Label1_Click(label1,null);
      

  2.   

    在button的click事件中写lable1_Click(send,e)
      

  3.   


    注意,如果在lable1_Click的事件中引用了e时,,需要同时传递此事件类型
      

  4.   

    实验证明,你的send少了个er应该是sender不过我感觉楼主题的这个问题应该没有吧,应该把lable1_Click里面的代码提出一个函数来。然后在lable1_Click里调用这个函数,button里也调这个函数
      

  5.   

    lable1的click事件的定义不一定是lable1_Click,我目前的情况是不知道label1的click事件名称是什么(因为是在代码中动态定义的),只知道要调用的是label2的click事件。类似于js中的obj1.click=obj2.click,但在c#中不能这么定义,有没有什么方法可以达到这个目的呢?
      

  6.   

    那就用反射来做吧:            PropertyInfo pi = typeof(Label).GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
                EventHandlerList ehl = (EventHandlerList)pi.GetValue(label1, null);
                FieldInfo fieldInfo = (typeof(Control)).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
                Delegate d = ehl[fieldInfo.GetValue(null)];
                d.DynamicInvoke(label1, null);
    EventHandlerList 类在System.ComponentModel命名空间下