2010-11-23 15 views
13

カスタムイベント処理クラスを作成する方法、作成方法に関するアイデアがある場合、またはこれに関する良い記事を知っている場合は、私に手伝ってください。アドバンスカスタムイベント処理クラスを作成する方法EventArgsと同じように

+3

Googleにはたくさんのものがあります。これはかなりよく見えます。http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-custom-event-handlers – Ozzy

+0

「イベント処理クラス"? –

答えて

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

EventArgsではなく、イベント用の新しいEventHandlerがあると思います。これを行うには2つの簡単な方法があります。 、ビューの構文ポイントから2番目の方法は、ほぼ同じくらい簡単です、そしておそらくすっきり

event EventHandler<MyEventArgs> sampleEvent; 

:まず、あなたは新しいのEventArgsクラスを使用しての最速かつ最も簡単な方法で一般的なのEventHandlerを使用してイベントを作成することができますあなたはすぐに使用することができ、あなたのイベントのために必要な引数を持つ新しいデリゲートを作成することです:

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

をそして、この第二の方法は、あなたが後でハンドラを再利用することができます。

+1

+1 EventHandlerを表示するイベントを宣言する方法 –

+0

汎用イベントハンドラソリューションをお寄せいただきありがとうございます。私はEventHandlerでカスタムコンストラクタを探していて、ジェネリッククラスであるとは考えていませんでした。問題が解決しました。 –

1

あなたはこのようなイベントを宣言:イベントを発生させるために、そして、

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

を:

MyEvent(...); 

イベントがnullのたびに確認するための要件を削除するには、匿名デリゲートに初期化されますあなたはイベントを起こしたいと思う。

関連する問題