65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Visual Inheritance 创建模板窗体

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.93/5 (9投票s)

2004 年 5 月 14 日

3分钟阅读

viewsIcon

79805

downloadIcon

948

理解 .NET 中的可视化继承,并使用可视化继承创建通用模板表单。

引言

众所周知,在面向对象编程 (OOP) 中,继承 是指使用现有类的所有功能,并在不重写原始类的情况下扩展这些功能的能力。 基本上,这意味着一个对象可以继承另一个对象的方法和属性。

在 .NET 中,继承不仅限于设计类,还扩展到可视化设计。 那么,这意味着什么? 也就是说,我们也可以在表单设计中使用继承,因此这种用法被称为 可视化继承

但是,Windows 窗体 的可视化继承仍然是基于类的继承。 在使用可视化继承时,必须牢记所有其他继承功能。 例如,如果您在基类中创建方法和属性,则必须注意哪些方法和属性可以被派生类覆盖。

可视化继承的主要优点之一是它可以减少或缩短开发时间,并有助于在表单布局中设计一致性。

在大多数应用程序开发中,您会发现表单布局具有共同的外观。 从技术上讲,这基本上是在应用程序设计中遵循的表单模板概念,以在整个产品中提供相同的外观。

大多数开发人员在应用程序开发过程中花费时间设计表单布局。 因此,通过使用可视化继承,开发人员可以缩短时间和成本。

以下是一些您可以在表单设计中使用可视化继承的领域

  • 具有通用菜单结构的表单
  • 具有通用图形图像和按钮的表单
  • 表单的行为必须根据使用情况进行更改
  • 需要通用代码的表单

但是,使用可视化继承,您可以创建一个 模板表单,其中包含所有通用控件以及通用代码。然后,您可以从您的模板基表单派生新的表单,这些表单提供适当的功能。

让我用一个小的例子来解释一下

在示例应用程序中,我们假设大多数表单在 UI 中都应该具有相同的外观。 因此,让我们创建一个 模板表单,其中包含一个菜单栏、徽标和按钮,这些将在所有表单中通用。 图 1 显示了模板表单。

Template.vb

图 [1]。 Template.vb

在示例应用程序 Visual Inherit 中,我们将创建一个从 Template.vb 继承的 Form图 [2] 显示了名为 FormsUsingTemplate.vb 的继承表单。

FormsUsingTemplate.vb

图 [2]。 FormsUsingTemplate.vb

要从 Template.vb 表单继承,您所需要做的就是右键单击项目的解决方案资源管理器,然后选择“添加新项目”,然后选择 “继承表单”。 选择 “继承表单” 后,您将看到一个继承选择器对话框,其中显示了项目中所有可用的表单,我们将为我们的示例选择 Template Form,如 图 [3] 所示。

Inheritance Picker

图 [3]。 继承选择器

在代码视图中,您可以看到 FormsUsingTemplate 表单是从 Template 表单派生的。

Public Class FormsUsingTemplate
      Inherits VisualInherit.frmTemplate

如果您在设计视图中看到 FormsUsingTemplate 表单,则所有从基模板继承的项目都将显示在表单项目上带有特殊图标。 这些不能在继承表单中编辑。 如果您需要编辑模板的任何可视外观,则需要在 Template 表单中编辑,这将自动反映在派生表单中。

因此,现在您可以在派生表单中添加所有必需的控件,如果需要,甚至可以通过手动更改代码、修饰符以及根据您的要求来覆盖基表单中的某些方法。 在示例应用程序中,我只是在派生表单中隐藏了按钮点击事件。

Private Shadows Sub butSubmit_Click(ByVal sender _
  As System.Object, ByVal e As System.EventArgs) Handles butSubmit.Click

  Dim msg As String
  msg = "Name :" & txtName.Text & " " &_
        "Age :" & " " & txtAge.Text & " " &_
        "Salary :" & txtSalary.Text
  MessageBox.Show(msg)
End Sub

结论

可视化继承有助于缩短开发时间,并且,就像类中的继承作为语言特性一样,继承也可以在表单设计中使用。

© . All rights reserved.