【问题标题】:Inheritance of Form形式的继承
【发布时间】:2014-03-06 09:50:59
【问题描述】:

让我概述一下情况。我有一堆已经实现继承的表单。

例子:

 Form A       - Form A1 (inheritance)
              - Form A2 (inheritance)
 Form B       - Form B1 (inheritance)
              - Form B2 - FormB21 (inheritance)
                        - FormB22 (inheritance)
              - Form B3 (inheritance)
 Interface 1  - Form 1A (implementation)
              - Form 1B (implementation)
              - Form 1C (implementation)

假设

表格 A1、A2、B21 和 1A 包含字段“作者”

表格 1A、1C、B3、A2 包含一个名为“Origin”的字段。

AuthorsTextBoxOriginComboBox

现在我想将我的inputcontrole 分组到一个超类中(我的所有表单都将从那里继承)。如果不创建所有表单继承自的Form,我将如何做到这一点?

我试图让它们从标准类继承,但我想我在某处犯了错误:

Public Class superclass
       Inherits Windows.Forms.Form

       Public Sub New()
           Mybase.New()
       End Sub

       Public Overridable  Sub InputcontroleAuthors()
       Public Overridable  Sub InputcontroleOrigin()
End Class

注意:我也希望避免使用Shared 函数。

任何指针将不胜感激。

【问题讨论】:

  • 我更新了你的问题。我猜你的代码中有一个错字,它有Inherts而不是Inherits。您可以在自己的代码中确认这一点吗?
  • 是的,这是一个错字。这只是我发布的示例代码(几乎没有参考我的实际代码)。我的真实代码要扩展得多,并且会使问题变得太长。我正在寻找最佳实践/设计模式

标签: .net vb.net winforms inheritance


【解决方案1】:

您可以定义一个包含所有控件的界面(在本例中为AuthorsOrigin)。然后相应地以所需的形式实现此接口。

【讨论】:

  • 由于这些指定字段的所有表单的数据检查都是相同的,我宁愿选择继承。我想避免冗余代码。
  • @svranken - 继承经常被过度使用,不应该总是受到青睐。组合通常是更好的选择。你在 Windows 窗体中看到了很多。也许您需要编写一个可以在所有表​​单上重复使用的小组件?
  • 比起Inheritance,我更喜欢Composition
  • 在研究了何时使用inheritance 和何时使用composition 之后,我决定放弃继承的想法。我确实编写了一些性能更高且可读性更高的小组件。
  • @svranken 很高兴知道这一点!
猜你喜欢
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 2016-10-08
  • 2018-03-01
  • 1970-01-01
相关资源
最近更新 更多