2011-03-11 65 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属性以切换活动选项卡页面。

该按钮不应该是第一个用户控件的一部分。事实上,最好不要使用按钮,而是在用户选择另一个商店时触发事件。