2011-03-11 69 views
1

我有一個TabControl兩個選項卡。一個標籤有一個商店列表,另一個標籤有一個員工列表。在商店標籤上,我有一個顯示商店所有員工的按鈕;要做到這一點,我想切換到另一個選項卡,並從該選項卡的用戶控件中調用showEmployeesFromStore(store_id store)方法。我會怎麼做?用戶控件之間的通信

回答

0

我會在店面用戶控件SelectedStoreChanged或類似的事情上公開一個事件。將事件代理中新選擇的store_id傳回。

用您的表單訂閱該事件。事件發生時,表單的工作是決定如何處理這些信息。在這種情況下,請從商店UserControl的SelectedStoreChanged事件中提取store_id並將其傳遞到EmployeeUserControl.showEmployeesFromStore(store_id store)

保持您的控件對彼此無知。讓控件的所有者決定如何對控件引發的任何事件做出反應。夢想增加可用性,更好地分離主題區域,並且由於解開奇怪的控制流程而減少週末工作; o)

剛剛意識到我錯過了一個細節。您所說的按鈕應該在表單上,​​而不是任何用戶控件,假設您不希望它使用上述事件進行實時更新。在按鈕單擊時,表單應去檢查StoreUserControl.SelectedStoreID()並將結果傳遞給EmployeeUserControl.showEmployeesFromStore()

1

您的錯誤智力模型。僅僅因爲用戶控件在TabControl上不可見並不意味着該代碼也是不可見的。只需在你的代碼中調用控件的方法,它當然需要公開。然後更改選項卡控件的SelectedIndex屬性以切換活動選項卡頁面。

該按鈕不應該是第一個用戶控件的一部分。事實上,最好不要使用按鈕,而是在用戶選擇另一個商店時觸發事件。