有两个按钮控件
Button1 Button2
们它各自都关联有自己的事件处理程序,
现在我要在Button1执行的时候,触发Button2的Click事件,该怎么激发,注意,是激发事件,而不是单纯地去调用对方的事件处理程序?如 his.Button2_Click(null,null);是不符合要求的,因为我要的是模拟触发一次事件,而不是单纯地去调用对方的处理程序
一个事件可以有多少处理程序,那么我就是想要触发这个事件后,所有的处理程序都会调用,我要的就是这种触发的方式

解决方案 »

  1.   

    This.Button1.Click +=new EventHandle(button1_click);
    this.Button1.Click +=new EventHandle(button3_click);
    public void button1_click(object sender,EventArgs e)
    {
    }public void button3_click(object sender,EventArgs e)
    {
    }
      

  2.   

    不可能的,每次只能有一个事件
    因为触发事件后,会提交回送页面的,不仅事件处理代码,连Page_load等都要好执行一遍的
      

  3.   

    http://topic.csdn.net/t/20050801/10/4180470.html
      

  4.   

    smilnet(笨笨)  先生,你的是给事件添加一个事件处理程序吧,这不是我想要的,我为了不让大家误解还专门说了一些,还是误解了,我要的是触发一个事件,我知道这驻以理解.再把问题说明清楚
    比如在WIN32程序里,一个Click事件是由消息触发的,那么如果我们要模拟一次Click最好的方法不是去调用它的事件处事程序,而是发送一个WM_Click消触给按钮句柄,然后再由程序触发,这才符合逻辑哈,不在才开发大项目的时候,逻辑就越来越不清析了 
    好了,现在大家丢开ASP.NET回到纯C#的世界里,我要的产触发一个事件,再打个比方
    如有两个线程
    T1,T2
    在T2线程运行的时候,要触发一次T1的Button1的Click事件,我现在需要就晕种触发方法
      

  5.   

    -_-你还是回去编WIN32吧C#的事件机制是怎么实现的呢?用最最简单的语言来概括,它是一个函数指针的队列。你要做C#就最好用C#的思维去写程序。你的真正目的是想用C#直接控制WindowsMessage,和C#的事件已经不是一回事了。此事件非彼事件。诚然,C#的event handler只处理CLR给它的消息,
    CLR再来处理WM_Click这样的Windows Message,所以你用高级的语言来实现低级的功能,
    就像你想用JAVA写一个操作系统一样,完全是本末倒置,搞错了现有鸡还是先有蛋。
      

  6.   

    我想一定会保留这样一种功能的,不可能把这么重要的功能删除掉了,我宁愿承认是我自己表达不清楚,我并不是说一定要去接收WM_Click消息,我只是打个比方,C#的事件委托原理,我想也应该有一个执行者吧,也就是说我怎么去执行一个委托里面所有被委托的方法
      

  7.   

    public class TextEvent
    {
    public delegate void CallMeDelegate();public event CallMeDelegate CallMeEvent;public void TellCall()
    {
      if(CallMeEvent!=null)CallMeEvent();//通知
    }
    }事件订阅方:TextEvent obj = new TestEvent();
    obj.CallMeEvent += new CallMeDelegate(this.show);
    public void show()
    {
      Console.Write("Yeah.....");
    }
      

  8.   

    那么我就想当一个事件的通知者,我怎么才能调用Click的CallMeEvent();//通知
    事件的模型我记得比谁都清楚啊,可问题是解决不了哈,我知道这个问题的严重性,已经把问题具体
    化了,重开一贴
    http://community.csdn.net/Expert/topic/5122/5122067.xml?temp=.1163751
      

  9.   

    好消息终于成功了,需要自己再继承一次就可以了哈
    public class MyButton:Button
    { public void OOnClick (EventArgs e)
    {
    base.OnClick (e);
    } }
    以后用OOnClick触发
      

  10.   

    我想一定会保留这样一种功能的,不可能把这么重要的功能删除掉了,我宁愿承认是我自己表达不清楚,我并不是说一定要去接收WM_Click消息,我只是打个比方,C#的事件委托原理,我想也应该有一个执行者吧,也就是说我怎么去执行一个委托里面所有被委托的方法==============================================================================
    在我眼里没有什么事件,委托,执行者,我眼里只有函数类型,函数指针或许还有一个,就是队列。下面的事情就简单了
    如果你要遍历一个队列,你必须要拿到这个队列的引用(Win32中的句柄?C中的头地址?),这样就完事了,以smilnet(笨笨) 贴的典型事件模型代码做例子,你如何拿到CallMeEvent的引用?
    通过obj.CallMeEvent,C# complier提示你obj.CallMeEvent只能出现在 += 或者 -=的左边。
    也就是说C#不支持对Event的直接操作。或许只能使用反射来做。
      

  11.   

    using System;
    using System.Collections.Generic;public delegate void display();
    public class test{
    public void Click(){
    if(event1!=null){
    //事件1
    event1();
    //事件2
    foreach(display d in event2.GetInvocationList()){
    d();
    }
    }
    }
    public event display event1;
    public event display event2;
    }
    public class MyClass
    {
    public static void Main()
    {
    test t=new test();
    t.event1+=new display(event1);
    t.event2+=new display(event2);
    t.event2+=new display(event3);
    t.Click();

    Console.Read();
    }
    static void event1(){
    Console.WriteLine("event1");
    }
    static void event2(){
    Console.WriteLine("event2");
    }
    static void event3(){
    Console.WriteLine("event3");
    }
    }
      

  12.   

    t.Click(); 这一句是无法编译通过的,呵呵
      

  13.   

    event申明为private上面的方法就都没用了。