2011-11-16 44 views
1

我有一個CompositeControl帶3個按鈕,我不想將這些按鈕作爲我的CompositeControl的公共成員。但我也想分別公開他們的Click事件,這樣這個控件的用戶可以訂閱它們。如何將複合Winforms控件中的事件暴露給外部?

我不知道如何做到這一點,而無需在我的控制中重複相同的事件,並分別提高每個按鈕的Click事件。

回答

2

我不知道如何做到這一點,而無需在控件中重複相同的事件並分別提高每個按鈕的Click事件。

這真的是正確的處理方法。您需要複製該事件,但要爲其指定一個新的專有名稱。

通常,這意味着將「click事件」暴露給與按鈕活動相關的名稱,而不是按鈕本身。舉例來說,如果你有一個刷新按鈕,我會揭露的事件,就像這樣:

public event EventHandler RefreshRequested; 

然後,在內部,你會聽按鈕的點擊事件,提高刷新請求的事件。這也爲您提供了稍後改變內部表示的靈活性(例如,如果您想使用按鈕以外的其他功能)。

+0

謝謝里德。我不確定如何將複合控件的主事件與內部事件連接起來。當用戶訂閱我的活動時,我會將相同的活動分配給內部活動? –

+1

@JoanVenge最簡單的方法是始終訂閱內部事件(即:在您的構造函數中),然後將它們提交給您的主事件。提高事件的標準事件處理將防止未處理的用戶造成任何問題... –

相關問題