c#代码如下:
private void Form_Load()
{    Button myBTN=new Button();
    myBTN.Click+=new EventHandler(OKClick);
}
private void OKClick(object sender,EventArgs e)
{
    MessageBox.Show("事件处理过程");
}
请问各位高手,我如何在OKClick过程中的参数e 中加入自己的属性,比如string类型的属性MyMsg;并且要求达到在Form_Load中给这个MyMsg赋值的目的?

解决方案 »

  1.   

    基本不可能,因为OKClick事件是由Button激发的。一定要做的话,可以从Button 派生自己的类,
      

  2.   

    你可以自己定义一个事件,把消息通过你自己的事件传递:public class MyButtonEventArgs : EventArgs
    {
        string msg;
        public MeButtonEventArgs(string msg)
        {  this.msg = msg; }
        public string Message
        { get{return message;} set{ message = value;} }
    }public delegate void MyButtonClickEventHandler(object sender, MyButtonEventArgs e);在你的类中添加一个事件成员:public event MyButtonClickEventHandler ButtonClick;然后在你的OKClick中:if( ButtonClick != null)
    {
        MyButtonEventArgs args = new MyButtonEventArgs("你需要添加的消息");
        ButtonClick(sender, args );
    }
      

  3.   

    可能是我没有把问题描述清楚,这里再说一次:
    第一个类:
    public class QQHyperLinker
    {
      public delegate void QQClickHandler
      (
        object lc_ObjectBOX,
        string ls_StringBOX                                                
      );
      public event QQClickHandler QQClick;
      //请注意,这里没有代码用来触发QQClick事件。因为这个类不允许重写Click事件。所以也就没有没有什么时机触发它了
    }第二类:
     public class Class2
    {
       QQHyperLinker bc_Link = new QQHyperLinker();
       bc_Link.QQClick += new QQHyperLinker.QQClickHandler(CallIE1);
       上面这句代码是正确的,但是,问题出现了,在第一个类里面,并没有触发QQClick事件的过程,所以,第二个类,也就是上面这句代码永远也发挥不了作用,第一个类里是不允许重写
    Click事件的,所以我怎么样实现触发这个QQClick事件呢?
    }
      

  4.   

    EventArgs类主要是用来保存触发事件时发送者发送给被发送者的信息的,
    如果需要自己发送信息,那可以重载EventArgs,然后定义委托和事件,niwalker() 已经写的很清楚了。如果有不清楚,你可以看看《.net框架程序设计(修订版)》,里面事件和委托讲的很仔细!