Windows窗体inheritance

我想创build一堆表单,它们都具有相同的属性,并通过分配构造函数的参数来初始化窗体构造函数中的属性。

我尝试创build一个从窗体inheritance的类,然后从所有类inheritance我的窗体,但是我想因为我无法调用InitializeComponent(),所以我遇到了一些问题。

什么是一些C#代码如何做到这一点?

Solutions Collecting From Web of "Windows窗体inheritance"

应该通过让你的构造函数调用base()来调用父类的InitializeComponent

 public YourFormName() : base() { // ... } 

(你的父表单应该在其构造函数中调用InitializeComponent ,你没有拿出来,是吗?)

然而,你要下的道路不是一个能够很好地与设计师一起工作的道路,因为你不能在设计时用这些参数来实例化你的窗体(你必须提供它是无参数的构造函数)。 您还会遇到第二次分配父项属性的问题,或者如果您在代码中使用参数化构造函数,则会分配它们与您可能想要的不同。

坚持只是在窗体上的属性,而不是使用带有参数的构造函数。 对于形式,你会头痛。

从这里继承的另一种模式是使用工厂来创建表单。 这样你的工厂可以设置所有的属性

创建一个接口并将其传递给表单的构造函数。

 interface IFormInterface { //Define Properties here } public MyForm(IFormInterface AClass) { //Set Properties here using AClass } 

虽然我通常做的不只是设置属性,当我想要做这样的事情,所以我最终创建一个默认行为的抽象类。