我有一个TabControl
两个选项卡。一个标签有一个商店列表,另一个标签有一个员工列表。在商店标签上,我有一个显示商店所有员工的按钮;要做到这一点,我想切换到另一个选项卡,并从该选项卡的用户控件中调用showEmployeesFromStore(store_id store)
方法。我会怎么做?用户控件之间的通信
1
A
回答
0
我会在店面用户控件SelectedStoreChanged
或类似的事情上公开一个事件。将事件代理中新选择的store_id传回。
用您的表单订阅该事件。事件发生时,表单的工作是决定如何处理这些信息。在这种情况下,请从商店UserControl的SelectedStoreChanged
事件中提取store_id并将其传递到EmployeeUserControl.showEmployeesFromStore(store_id store)
保持您的控件对彼此无知。让控件的所有者决定如何对控件引发的任何事件做出反应。梦想增加可用性,更好地分离主题区域,并且由于解开奇怪的控制流程而减少周末工作; o)
刚刚意识到我错过了一个细节。您所说的按钮应该在表单上,而不是任何用户控件,假设您不希望它使用上述事件进行实时更新。在按钮单击时,表单应去检查StoreUserControl.SelectedStoreID()
并将结果传递给EmployeeUserControl.showEmployeesFromStore()
1
您的错误智力模型。仅仅因为用户控件在TabControl上不可见并不意味着该代码也是不可见的。只需在你的代码中调用控件的方法,它当然需要公开。然后更改选项卡控件的SelectedIndex属性以切换活动选项卡页面。
该按钮不应该是第一个用户控件的一部分。事实上,最好不要使用按钮,而是在用户选择另一个商店时触发事件。
相关问题
- 1. Caliburn.Micro:用户控件之间的通信
- 2. 用户控件之间的通信
- 3. Silverlight中的用户控件之间的通信
- 4. 页面上用户控件之间的通信 - C#/ ASP.NET
- 5. Sharepoint:WebPart和silverlight控件之间的通信
- 6. UI控件之间的通信
- 7. Webbrowser控件和C#之间的通信#
- 8. 在asp.net中嵌套用户控件通信的用户控件
- 9. JavaFX。控制器之间的通信
- 10. 控制器之间的通信JavaFX
- 11. 视图控制器之间的通信
- 12. 嵌套控制器之间的通信
- 13. 如何在用户控件和我的主窗体之间进行通信?
- 14. MVVM与两个用户控件(一个包含其他)之间的通信
- 15. Liferay - portlet之间的客户端通信
- 16. 在Web部件中的控件之间进行通信
- 17. 通信控制器之间不可能
- 18. WPF - 用户控件之间的绑定
- 19. 用户控件之间传递值
- 20. Maquette中组件之间的通信
- 21. 展开AngularJS组件之间的通信
- 22. 闪存文件之间的通信
- 23. 扩展和插件之间的通信
- 24. 兄弟组件之间的通信Angular2
- 25. Reactjs组件之间的通信
- 26. 打字稿,部件之间的通信
- 27. 2个组件之间的Angular2通信
- 28. 页面之间的通信
- 29. ViewModels之间的通信
- 30. 类之间的通信