2010-11-23 77 views
13

如何編寫自定義事件處理類,如果有任何人有想法如何創建它,或者如果你知道任何關於此的好文章,那麼請幫助我。如何創建自定義事件處理類像EventArgs

由於提前

+3

谷歌有很多...這一個看起來很不錯,基本:http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-custom-event-handlers – Ozzy 2010-11-23 09:45:46

+0

什麼是「事件處理類」? – 2010-11-23 09:51:24

回答

17

我不完全知道你的意思,但如果你在談論一個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 

希望這有助於。

12

我相信你指的是一個事件的新EventHandler,而不是EventArgs。有兩個簡單的方法來做到這一點。首先你可以創建一個使用通用的事件處理程序是使用新EventArgs類的最快和最簡單的方法事件:

event EventHandler<MyEventArgs> sampleEvent; 

第二種方法是幾乎一樣簡單,從一個語法點會更方便,是創建具有您想,您可以使用直線距離的參數爲您的活動一個新的委託:

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

而這第二種方法將允許您以後重用處理程序。

1

你聲明的情況下是這樣的:

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

然後,引發事件:

MyEvent(...); 

該事件被初始化爲匿名委託刪除的要求,檢查空每次你想提高這個事件。