2010-03-01 54 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