关于c#:Windows Form继承

Windows Form inheritance

我想创建一组具有相同属性的表单,并通过分配构造函数的参数来初始化表单构造函数中的属性。

我尝试创建一个从窗体继承的类,然后让我的所有窗体从该类继承,但我认为由于无法调用InitializeComponent(),所以我遇到了一些问题。

关于如何做这件事的一些C代码是什么?


父级的InitializeComponent应该通过让构造函数调用base()来调用,如下所示:

1
2
3
4
public YourFormName() : base()
{
    // ...
}

(您的父窗体在其构造函数中应该有一个对InitializeComponent的调用。你没有拿出来,是吗?)

但是,您要走的道路并不能很好地与设计人员配合,因为您无法让它在设计时用这些参数来实例化您的表单(您必须为它提供一个无参数的构造函数才能工作)。您还将遇到这样的问题:它将第二次分配父属性,或者将它们分配为与在代码中使用参数化构造函数时可能需要的不同的属性。

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


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


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

1
2
3
4
5
6
7
8
9
interface IFormInterface
{
      //Define Properties here
}

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

虽然我通常不只是在做类似的事情时设置属性,所以我最终为默认行为创建了一个抽象类。