2011-12-14 66 views
3

我有一個類,它試圖在另一個類中註冊一個事件。如何註冊不同類別的鼠標事件

在A類我有一個方法,如下圖所示:

public void Mouse_Down(object sender, MouseEventArgs e) 
     { 

     } 

我註冊在B類的事件,像這樣:

  ClassA classA = new ClassA(); 
      classA.MouseDown += new MouseEventHandler(classA.Mouse_Down); 

當點擊什麼也沒有發生。有誰知道是什麼問題。

+0

您是否嘗試過在`Mouse_Down`方法中設置斷點? – 2011-12-14 10:57:27

回答

0

在事件觸發代碼(classA)中設置斷點並檢查EventHandlers集合。我敢打賭,沒有人註冊,而且你正在搞classA實例。

也有可能你永遠不會得到你的斷點,這意味着你的事件沒有被解僱。

無論如何,你想做的事看起來有點奇怪。

編輯:

你試過註冊一個不同的方法,以「正常方式」相同的事件(例如從ClassA的構造函數。)?如果您無法訪問事件觸發代碼,那麼在觸發事件時檢查是否有正確的處理程序註冊是最好的方法。

1

假設你要處理由ClassB引發事件:

您正在註冊的事件ClassA的事件,而不是ClassB的。你從B班開始練習並不意味着什麼。


假設你要處理由ClassA引發事件:

一種可能性是,ClassA不同的實例觸發事件,而不是一個誰處理事件。

ClassA classA = new ClassA(); 

上面創建了一個新的classA實例。如果這不是引發事件的那一個,那麼你不會調用你的方法。