代码之家  ›  专栏  ›  技术社区  ›  Ronnie Overby

Windows窗体继承

  •  5
  • Ronnie Overby  · 技术社区  · 15 年前

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

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

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

    3 回复  |  直到 10 年前
        1
  •  6
  •   Adam Robinson    15 年前

    父母的 InitializeComponent 应该通过调用构造函数来调用 base() 这样地:

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

    (您的父窗体应调用 初始化组件 在其构造函数中。你没有拿出来,是吗?)

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

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

        2
  •  1
  •   JoshBerke    15 年前

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

        3
  •  0
  •   JupiterP5    15 年前

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

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

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