代码之家  ›  专栏  ›  技术社区  ›  Nitish Katare

如何创建自定义事件处理类,如EventArgs

c#
  •  15
  • Nitish Katare  · 技术社区  · 14 年前

    如何编写自定义事件处理类,如果有人知道如何创建它或如果你知道任何关于这方面的好文章,请帮助我。

    提前谢谢

    3 回复  |  直到 14 年前
        1
  •  20
  •   Moo-Juice    14 年前

    我不完全明白你的意思,但如果你说的是EventArgs派生类:

    public class MyEventArgs : EventArgs
    {
        private string m_Data;
        public MyEventArgs(string _myData)
        {
            m_Data = _myData;
        } // eo ctor
    
        public string Data {get{return m_Data} }
    } // eo class MyEventArgs
    
    
    public delegate void MyEventDelegate(MyEventArgs _args);
    
    public class MySource
    {
        public void SomeFunction(string _data)
        {
            // raise event
            if(OnMyEvent != null) // might not have handlers!
                OnMyEvent(new MyEventArgs(_data));
        } // eo SomeFunction
        public event MyEventDelegate OnMyEvent;
    } // eo class mySource
    

    希望这有帮助。

        2
  •  17
  •   Migwell    14 年前

    我相信您所指的是事件的新事件处理程序,而不是事件参数。有两种简单的方法。首先,您可以创建一个使用泛型EventHandler的事件,泛型EventHandler是使用新EventArgs类的最快和最简单的方法:

    event EventHandler<MyEventArgs> sampleEvent;
    

    第二种方法几乎同样简单,而且从语法角度来看可能更简洁,就是创建一个新的委托,该委托包含您想要的事件参数,您可以立即使用这些参数:

    delegate void MyEventHandler(object sender, MyEventArgs e);
    event MyEventHandler sampleEvent;
    

    第二种方法允许您稍后重用处理程序。

        3
  •  1
  •   Nobody    14 年前

    您这样声明事件:

    public delegate void MyEventDelegate(...);
    public static event MyEventDelegate MyEvent = delegate { };
    

    然后,要引发事件:

    MyEvent(...);
    

    该事件初始化为匿名委托,以便在每次要引发事件时删除检查null的要求。