直接这样就可以了。
myButton.Click+=new    System.EventHandler(But_Click);
EventHandler本质就是一个Delegate。

解决方案 »

  1.   

    误会我的意思了,我知道可以直接写的,可是当But_Click不在这个类中,而我又有什么方法,可以从外部传入方法到这个类中add()中呢?
      

  2.   

    那么假设But_Click在类Sample中,可以写如下代码:
    Sample a := new Sample();
    myButton.Click+=new  System.EventHandler(a.But_Click);
      

  3.   

    作为参数,似乎只能这样:
    public void Add(EventHandler a)
    {
    button2.Click += a;
    } Add(new EventHandler(button3_Click));
      

  4.   

    解决啦!Checlhy你最后的那个作为参数的方法可以!:)
    要的就是这个。倒数第二个不是不可以,而是必须在类中实例化带有方法的类才能用,如果是这个类的调用者的方法就不行了。非常感谢!给分啦。
      

  5.   

    delegate  void  EventFunction(object  sender,EventArgs  e);
      public    void    add(EventFunction  function)
          {
                      Button    myButton=new    Button();
                      myButton.Name="asdf";
                      myButton.Location=new    Point(20,20);
                      myButton.Click+=new    System.EventHandler(function);
          }
          
          public    void    Btn_Click(object    sender,System.EventArgs    e)
          {
                      ....
          }
      EventFunction  eventFunction+=new  EventFunction(Btn_Click);
      add(eventFunction)