2012-04-27 6 views
1

クラスAでクリックイベントハンドラをいくつかのロジックで使用しています。そして今私はクラスBからクラスAイベントハンドラにアクセスし、クラスBイベントハドラーロジックが最初にクラスAイベントハンドラに続いて発生するようにいくつかのロジックを行いたいと思います。別のクラスのイベントハンドラにアクセスする方法

例:クラスBを仮定

Class A 
private void calculate_Click(object sender, System.EventArgs e) 
{ this.MyMethod(); } 

Class B 
private void calculate_Click(object sender, System.EventArgs e) 
{ // My new code.. (This should trigger first) this.MyMethod(); } 
+2

を理解するために、この単純な例を見つけ

これは私にはコードのにおいのように思えます。あなたの目標は何ですか?クラスBのAの計算動作をオーバーライドしたいですか? –

答えて

1

あなたはクラスAによって公開され、私たちのようにクラスBによって消費されるイベントを使用することができますButtonクラスを使用します。ボタンはクリックイベントを公開し、フォームクラスではButtonクラスによって公開されるクリックイベントを登録します。私はhere

using System; 
namespace wildert 
{ 
    public class Metronome 
    { 
     public event TickHandler Tick; 
     public EventArgs e = null; 
     public delegate void TickHandler(Metronome m, EventArgs e); 
     public void Start() 
     { 
      // while (true) //uncomment this line if you want event to fire repeatedly 
      { 
       System.Threading.Thread.Sleep(3000); 
       if (Tick != null) 
       { 
        Tick(this, e); 
       } 
      } 
     } 
    } 
     public class Listener 
     { 
      public void Subscribe(Metronome m) 
      { 
       m.Tick += new Metronome.TickHandler(HeardIt); 
      } 
      private void HeardIt(Metronome m, EventArgs e) 
      { 
       System.Console.WriteLine("HEARD IT"); 
      } 

     } 
    class Test 
    { 
     static void Main() 
     { 
      Metronome m = new Metronome(); 
      Listener l = new Listener(); 
      l.Subscribe(m); 
      m.Start(); 
     } 
    } 
} 
0

は、のインスタンスに適切initilizedインスタンス部材A instanceOfClassAを有する:

private void calculate_Click(object sender, System.EventArgs e) 
{ 
    // My new code.. (This should trigger first) 
    instanceOfClassA.MyMethod(); 
    // other code 
} 

またAからクラスBを継承考慮することができる:

class B:A 
{ 
    private void calculate_Click(object sender, System.EventArgs e) 
    { 
     // My new code.. (This should trigger first) 
     this.MyMethod(); // will come from base class A implementation. 
     // other code 
    } 
} 
+0

こんにちはアレクセイ、私はクラスAから継承したくないが、私はアクセスしたい。私は..? –

+0

@ Mr.Info あなたはAlexeiによって記述された最初のオプションを選択する必要があります – Marshal

関連する問題