2016-06-14 13 views
-3

私は2つのクラス、1つのクラスのイベントハンドラを初期化します。私は別のクラスからこのイベントハンドラを聞く必要があります。どのように私はこれを実装することができますか?c#winformsのクラスのイベントハンドラを他のクラスから聴くにはどうすればいいですか?

私はすでに私はイベント、他のクラスからこのイベントを監視する方法を

NetworkLostEvent(this, EventArgs.Empty); 

を発射するために、このコードを使用し

public event EventHandler NetworkLostEvent; 
を試してきましたか?

+0

'yourClass.NetworkLostEvent + =(sender、args)=> {//あなたのコード}' –

答えて

0

このイベントを購読する必要があります。

イベントは、次の行を使用して購読できます。

//Lets say you have event defined in class2 or form2 
form2.NetworkLostEvent += NetworkLostEventTriggered; 

private void NetworkLostEventTriggered(object sender, EventArgs e) 
{ 
    //logic 
} 

または、

//Lets say you have event defined in class2 or form2 
form2.NetworkLostEvent += (s,ev) => {/*logic here*/ MessageBox.Show("event triggered"); }; 
0

私が正しく理解していれば、何が欲しいのは、たとえば、グローバルイベントです:変更セル値を持つ1つのDataGridViewのは、自動的に任意の他の同様のインスタンスのセルの値を変更しますdatagridviewは、これは正しいですか?

これは私が同時に複数のインスタンス上で呼び出してイベントを処理HERESにどのような場合は()

これは私が完全に私を取り付けることを思い付いたものです解決のために、ネットを中心に検索した後。これは、あなた自身が自由に作成し、火災「特別な」イベントです:

SpecialEvents special_Events = new SpecialEvents(); 
special_Events.StartedEventA += special_Events_StartedEventA; 

そして今、そのイベントがあるときに実行するコード:

public class SpecialEvents 
{ 
    //first custom event 
    public EventArgs e = null; 
    public event StartEventHandlerA StartedEventA; 
    public delegate void StartEventHandlerA(SpecialEvents se, EventArgs e); 
    public void StartEventA() 
    { 
     if (StartedEventA != null) 
     { 
      StartedEventA(this, e); 
     } 
    } 

    //second custom event 
    public event StartEventHandlerB StartedEventB; 
    public delegate void StartEventHandlerB(SpecialEvents se, EventArgs e); 
    public void StartEventB() 
    { 
     if (StartedEventB != null) 
     { 
      StartedEventB(this, e); 
     } 
    } 

} 

は、今、私たちは、カスタムイベントが言ったに加入する必要があります

void special_Events_StartedEventA(SpecialEvents se, EventArgs e) 
{ 
    //do whatever you want for this specific class/object once that event is fired 
} 

をそして最後に、あなたはいつでも、あなたが好きな場所からイベントをトリガするために:トリガー

special_Events.StartEventA(); 

シンプルなもので、すべてのオブジェクトに対してどのオブジェクトがトリガされ、各オブジェクトまたはクラスが実行されても、特定の時刻に発生する予定のイベントに関連付けられている依存/独立コード独自のスクリプトまたはコード。

このようにして、あなたが望むリスニング機能だけでなく、それに多くの作業を行うことができます。

+0

まだ回答を選択しなかった理由はありますか?私の方法やsomeonesメソッドで何か質問がありますか?いずれの回答も適切でない場合は、さらに詳しくお伝えください。 –

関連する問題