2010-06-17 69 views
1

我有兩個類。 一個類(比如A)在c'tor中使用一個文本框。並使用私有事件處理程序方法註冊TextChanged事件。 第二類(比如B)通過提供一個文本框來創建類A的對象。從外部類調用私人事件處理程序

如何從類B調用類A的私有事件處理程序?

它還註冊MouseClick事件。

有什麼辦法可以調用私人事件處理程序嗎?

回答

3

簡答:不。

聲明事件處理程序爲公共,或更好,創建一個公共代理方法,像

public class MyClass 
{ 
    private myHandler.... 

    public returnType DoClick() { return myHandler(...); } 
} 

給予私有成員直接訪問失敗,宣佈其私人的目的。

0

對私人用戶訂閱私有方法和觸發事件都沒有限制。你到目前爲止是否有任何錯誤?

+0

但是A類如何調用B類的私有方法?我想以編程方式提出事件。 – Azodious 2010-06-17 14:41:59

2

創建事件處理函數和其他類都可以調用的公共方法。一般來說,直接調用事件處理程序是一個壞主意。仔細考慮你想要做什麼,你應該能夠找到一個更接近你想要做的概念的代碼結構。你不想讓其他班級點擊一個按鈕;你希望你的其他班級做點擊按鈕的事情也會做。

+1

+1很好的語義分析。如果有問題的類不是UI組件(頁面或控件),它不應該公開處理程序,而是處理程序將調用的方法。 – 2010-06-17 15:03:39

相關問題