![](/img/trans.png)
[英]Windows forms: Wiring up custom events between controls added at runtime
[英]Windows Forms : Custom Events vs. Exposed Properties for composite controls
假設我有一個復合控件,其中有一個ListBox控件,它列出了例如雇員,還有一個包含多個TextBox控件的控件,這些控件將包含雇員的詳細信息。
當從ListBox控件中選擇雇員時,我需要將Employee對象傳遞給“ detail”控件,然后將每個TextBox控件的Text屬性分配給Employee對象的相對屬性。
我有兩種解決方案可以將Employee對象傳遞給“詳細信息”控件,但是我不確定哪個是最好的。
解決方案1 :在“詳細信息”控件中公開Employee屬性 ,以便在選擇雇員時,可以執行detailControl.Employee = selectedEmployee。
解決方案2 :在主控件中公開一個事件 ,並在選擇雇員時觸發該事件 。 “詳細信息”控件將訂閱該事件,並通過事件的eventargs接收Employee對象。
我知道這兩種方法都可以正常工作。 我只是不確定最好使用什么。
有人說您應該在帶有自定義事件的控件之間傳遞數據,這是最好的松耦合方法。
有人說實現自定義事件需要花費更多時間,因為您必須創建它們,向其中添加屬性等,因此使用公開的屬性更快,更簡單。
你有什么建議?
好吧,在我理想的世界中,您將擁有某種控制器。
主控件將引發控制器將監聽的事件。 然后,控制器將解碼應通知誰,即詳細信息控件。
這將UI組件完全分離,提供了通常的好處,包括簡化的單元測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.