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

.net 如何合并(Winform)可视继承树,.net,vb.net,winforms,virtual-inheritance,.net,Vb.net,Winforms,Virtual Inheritance,我有4个WinForm应用程序。Form1从baseForm继承,Formv2从Formv1继承,v3从v2继承,v4从v3继承。大约有2000个控件分布在包含选项卡的许多选项卡上 这真的是在扼杀VisualStudio2008,经常导致它崩溃,而且总体上表现糟糕 我想创建一个FormV5,它只从baseForm继承,但包含formsv1到v4的所有可视化布局(所有这些布局)(baseForm上没有控件) 表单之间的差异主要是添加了新控件,一些旧控件必须移动或隐藏,或者一些标签在这里或那里更改

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

这真的是在扼杀VisualStudio2008,经常导致它崩溃,而且总体上表现糟糕

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

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

有人能提出一个程序化的方法来实现这一点吗?比如在formV4上运行时使用反射或其他方法生成代码(转储formV4控件、布局和属性),我可以剪切并粘贴到formV5.designer.vb.file中吗

(请注意,这是一个大约有5年历史的企业项目,每次我们进行更改时,我们都需要将其推广到我们的所有客户(医院)。我们没有自动测试或单元测试,所以我有点必须正确:)

谢谢乔纳森


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

如果从Form1到Form2再到Form3再到Form4的布局主要是添加的(添加新控件),而不是大量的其他操作(更改大量现有控件),我将按如下方式将其分离:

  • 将所有全局表单设置(如背景色等,而不是子控件的布局)放在基本表单中。根据您的描述,这听起来像已经是基本形式了

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

  • 创建从第一个UserControl继承的第二个UserControl。必要时添加新控件
  • 创建从第二个UserControl继承的第三个UserControl。必要时添加新控件
  • 创建从第三个UserControl继承的第四个UserControl。必要时添加新控件
  • 创建一个从baseForm继承并具有第一个UserControl的Form1
  • 创建一个从baseForm继承并具有第二个UserControl的Form2
  • 创建一个从baseForm继承并具有第三个UserControl的Form3
  • 创建一个从baseForm继承并具有第四个UserControl的Form4

  • 这种想法的优点是,您可以根据自己的心意(默认字体、默认前景色等)更改基本表单上的设置,同时通过使用UserControls逐步更改控件的布局。

    Dice.com是解决此问题的一种方法。我感谢您为这个答案所做的努力,但这表明,也许我的问题并不清楚。要改变现有的形式,还有很多路要走。我想要一种简单的方法将所有现有布局合并到一个新的formv5中。基本上,我希望我能将formv4复制到一个新的formv5,它只继承自baseForm。