mvp模式中的(嵌套)用户控件导致偶发问题

时间:2010-03-01 15:41:19

标签: c# winforms visual-studio-2008 user-controls mvp

在尝试实现mvp模式(被动视图)时,WinForms中的嵌套用户控件(UCs)存在严重问题。该项目由一个模型(设计为单例)和一组具有相应视图界面的不同演示者组成。为了避免一个巨大的视图界面,​​因此重载主UI,我决定使用一组不同的UC。每个UC都有一个视图界面和一个可以访问模型的演示者。但是有嵌套的UC:意味着一个专门的UC实现了一种基本的UC。主UI只代表所有这些UC的容器。到目前为止,这么好(如果没有,请问)?!

我现在面临两个问题(但我猜两者都是同一个问题):

  1. 不时再加载UC并在Visual Studio 2008用户控件测试容器中测试它们是不可能的。错误消息只是说具有类库的输出类型的项目不能直接启动等。我可以通过卸载所有UC项目并随后重新加载来“处理”。 (我想更新了所有mvp组件和其他UC的引用)。
  2. 假设我的mvp模式的实现是可以的,并且所有这些UC在某个时间内都可以在VS测试容器内测试 - 仍然存在最大的问题:我无法添加任何UC(即使是基本的和unnested ones)到一个简单的表单(UI)。
  3. 难道我的基本UC会导致所有这些问题吗?!它由两个简单的ComboBox组成,实现了一个基本的演示者和基本的视图界面。每当我将这个UC添加到不同的UC时,VS设计者就会将UC的公共getter方法的两个引用添加为资源。然后,我从resx文件中手动删除这些资源,并推荐设计器文件中的相应行。

1 个答案:

答案 0 :(得分:0)

对于第二个:您应该在代码中使用DesingMode类(Component派生的)的UserControl属性。请注意,此属性存在一个错误,即嵌套用户控件的值不正确。 我认为这可以帮到你:When your WinForms UserControl drives you nuts