程序中,使用了EventHandler自定义事件myEvent,需要传递不同的信息给事件处理方法,例如需要传递的信息是字符串a或b。
现在,我只会传递EventArgs.Empty,或者传递e=new EventArgs();但是这样,并不能让e携带我需要传递的信息a或b。
应该怎么写代码呢?
另外,我知道自定义委托myEventHandler,然后再自定义事件参数类myEventArgs,就可以达到目的,但是我嫌这么写太罗嗦了。
如果只是使用微软的委托EventHandler,怎样才能传递我自己的信息呢?谢谢指教!

解决方案 »

  1.   

    继承 EventArgs
    例如:
    public class StringEventArgs:EventArgs
    {
    private string m_text;
    public string Text{get{return m_text;}}
    //构造函数
    public StringEventArgs(string text){m_text=text;}}
      

  2.   

    定义事件句柄:
    public event EventHandle<StringEventArgs> StringEvent;
      

  3.   

    兄弟,都四个角了啊。。
        public class NewEventArgs : EventArgs
        {
            string filename;
            public string Filename
            {
                get { return filename; }
                set { filename = value; }
            }        public NewEventArgs ()
            {
                filename = "";
            }
            public NewEventArgs (string file)
            {
                filename = file;
            }    }    public delegate void NewEventHandler(object sender, NewEventArgs e);    public event NewEventHandler youEvent; 
      

  4.   

    感谢楼上的回复,我的问题是在使用微软的EventHandler的前提下,怎么传递信息?
      

  5.   

    public event EventHandle<NewEventArgs > StringEvent;泛型事件!看看MSDN。
      

  6.   

    使用:
    StringEventArgs se = new StringEventArgs("你的字符串");
    if(StringEvent!=null)
       StringEvent(se);
      

  7.   

    谢谢,刚才看到微软定义EventHandler说的很清楚:“//     表示将处理不包含事件数据的事件的方法。”,看来就只能自己另写了。
    浪得五个角,其实徒有虚名!才认识C#几个月