如何合并(Winform)可视继承树

时间:2011-05-27 11:55:46

标签: .net vb.net winforms virtual-inheritance

我有4个WinForm应用程序。 Form1继承自baseForm,Formv2继承自Formv1,v3继承自v2,v4继承自v3。大约有两千个控件分布在包含选项卡的许多选项卡中。

这实际上是在杀死Visual Studio 2008,经常导致它崩溃,而且一般情况下表现糟糕。

我想创建一个仅从baseForm继承的FormV5,但包含formsv1到v4(所有这些)的所有可视布局,(baseForm上没有控件)。

从表单到表单的差异主要是添加新的控件,一些旧的控件必须被移动或隐藏,或者在这里和那里更改了一些标签。

有人能建议采用编程方式吗?就像在formV4上运行时使用反射或某些东西来生成代码(dump formV4控件,布局和属性)一样,我可以剪切并粘贴到formV5.designer.vb.file中吗?

(注意,这是一个大约5年的企业项目,每次我们进行更改时,我们都需要将其推送给所有客户(医院)。我们没有自动化测试或单元测试,所以我有点儿得到这个权利:))

感谢乔纳森

合并所有实际的formlogic虚拟成员,应该可以手动管理。

1 个答案:

答案 0 :(得分:0)

如果从Form1到Form2到Form3到Form4的布局主要是加法(添加新控件)并且不是很多其他操作(更改了大量现有控件),我会将其分开如下:

  1. 将所有全局表单设置(如backcolor等 - 而不是子控件的布局)放在基本表单中。根据您的描述,听起来这已经在 baseForm

  2. 将Formv1的所有子控件的布局放在UserControl中。此UserControl将充当之前在表单上的所有控件的容器。

  3. 创建第二个继承自第一个UserControl的UserControl。根据需要添加新控件。
  4. 创建继承自第二个UserControl的第三个UserControl。根据需要添加新控件。
  5. 创建第四个继承自第三个UserControl的UserControl。根据需要添加新控件。
  6. 创建一个继承自baseForm的Form1,并在其上有第一个UserControl。
  7. 创建一个继承自baseForm的Form2,并在其上有第二个UserControl。
  8. 创建一个继承自baseForm并具有第三个UserControl的Form3。
  9. 创建一个继承自baseForm的Form4,并在其上有第四个UserControl。
  10. 这个想法的优点是你可以将基本表单上的设置更改为心脏的内容(默认字体,默认前景色等),同时通过使用UserControls逐步更改控件的布局