2010-03-01 56 views
2

我試圖實現mvp模式(被動視圖)時在WinForms中嵌套用戶控件(UCs)存在嚴重問題。該項目由一個模型(設計爲單例)和一組具有相應視圖界面的不同主持人組成。爲了避免一個巨大的視圖界面,​​並因此重載主UI,我決定使用一組不同的UCs。每個UC都有一個視圖界面和一個可以訪問模型的演示者。但是有嵌套的UC:這意味着一個專門的UC實現了一種基本的UC。主UI僅代表所有這些UCs的容器。到目前爲止,這麼好(如果沒有,請問)?!(嵌套)用戶控件在mvp模式導致零星問題

有,我現在面臨兩個問題(但我想兩者是相同的起源):

  1. 不時它是不可能的了加載UCS並在視覺測試他們Studio 2008用戶控制測試容器。該錯誤消息只是說,具有輸出類型的類庫的項目不能直接啓動等。我可以通過卸載所有UC項目並在之後重新加載它們來「處理」。 (我猜想所有mvp組件和其他UC的引用都會被更新)。
  2. 假設我的mvp模式的實現沒有問題,並且所有這些UC在特定時間都可以在VS測試容器內測試 - 仍然存在最大的問題:我無法添加任何UC(即使是基本和unnested的)到一個簡單的表單(UI)。錯誤消息:error message.jpg

難道是我的基本UC導致所有這些問題?它由兩個簡單的ComboBox組成,並實現一個基本的演示者和基本的視圖界面。每當我將UC添加到不同的UC時,VS設計人員會將UC的公共getter方法的兩個引用作爲資源添加。然後我手動從resx文件中刪除這些資源並在設計器文件中建議相應的行。

THX提前

+0

我可以通過隱藏具有DesignerSerializationVisibility類thx屬性的特殊getter來修復關於我的基本UC的最後一個「bug」:http://stackoverflow.com/問題/ 2470538但主要問題依然存在。我無法以合適的方式將UC添加到表單中。有時我可以添加許多UCs中的一個,但與其他UCs再​​次出現錯誤。所以我真的認爲這是一個關於我參考的UCs圖書館的問題。任何想法,提示。我真的很感激。 thx – LLEA 2010-03-19 08:50:22

+0

關於我的模型類(設計爲單例)也有一個錯誤。每個Presenter訪問返回某個對象的單例類的一個方法。有時會發出警告,指出該類的Object [A]與同一類的Object [B]不兼容。所以又是一個lib錯誤? – LLEA 2010-03-19 08:58:18

回答

0

對於第二個:你應該使用Component類的DesingMode屬性(UserControl導出)在你的代碼。請注意,這個屬性在嵌套用戶控件時沒有正確的值。 這可以幫助你,我認爲:When your WinForms UserControl drives you nuts