簡體   English   中英

Windows窗體:復合控件的自定義事件與公開屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM