2012-04-27 110 views
1

我有一個具有邏輯的類A中的單擊事件處理程序。現在我想從類B訪問類A事件處理程序,並執行一些邏輯,以便類B事件hadler邏輯首先觸發,然後是類A事件處理程序。如何訪問另一個類中的事件處理程序

實施例:

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的計算行爲? – 2012-04-27 05:03:33

回答

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

假設類B具有與A的一個實例正確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班繼承,但我想訪問。我可以嗎..? – 2012-04-27 05:13:07

+0

@ Mr.Info 比你必須選擇阿列克謝描述的第一個選項 – Marshal 2012-04-27 05:18:01

相關問題