演练:演示可视化继承

视觉继承使你能够查看基本窗体上的控件并添加新控件。 在本演练中,你将创建一个基窗体并将其编译为类库。 将此类库导入另一个项目,并创建一个从基窗体继承的新窗体。 在本演练中,你将了解如何:

  • 创建包含基窗体的类库项目。

  • 添加具有可修改基窗体的派生类的属性的按钮。

  • 添加不能由基窗体继承者修改的按钮。

  • 创建包含从 BaseForm 继承的窗体的项目。

最后,本演练将显示继承的窗体上私有控件和受保护控件之间的差异。

谨慎

并非所有控件都支持从基窗体执行 Visual 继承。 以下控件不支持本演练中所述的方案:

无论使用何种修饰符(privateprotectedpublic),继承的窗体中的这些控件始终为只读。

创建一个包含基础窗体的类库项目

  1. 在 Visual Studio 的“文件”菜单中,选择 “新建项目”,打开“新建项目”对话框

  2. 创建一个名为 BaseFormLibrary 的 Windows 窗体应用程序。

  3. 若要创建类库而不是标准 Windows 窗体应用程序,请在 解决方案资源管理器右键单击 baseFormLibrary 项目节点,然后选择 属性

  4. 在项目的属性中,将 输出类型Windows 应用程序 更改为 类库

  5. 从“文件”菜单中,选择 “全部保存”,将项目和文件保存到默认位置。

接下来的两步是将按钮添加至基窗体。 为了演示视觉继承,可以通过设置按钮 Modifiers 属性来为按钮提供不同的访问级别。

添加一个按钮,以便基础窗体的继承者可以进行修改。

  1. 在设计器中打开“Form1”

  2. 工具箱“所有 Windows 窗体” 选项卡上,双击 按钮,将按钮添加到窗体。 使用鼠标定位按钮并调整其大小。

  3. 在“属性”窗口中,设置按钮的以下属性:

    • Text 属性设置为 Say Hello

    • (Name) 属性设置为 btnProtected

    • 将“Modifiers”属性设置为“Protected”。 这使得继承自 Form1 的表单可以修改 btnProtected的属性。

  4. 双击“Say Hello”按钮以为“Click”事件添加事件处理程序

  5. 将以下代码行添加到事件处理程序:

    MessageBox.Show("Hello, World!")
    
    MessageBox.Show("Hello, World!");
    

添加一个无法被基窗体继承者修改的按钮

  1. 通过单击代码编辑器上方 Form1.vb[设计]、Form1.cs [设计]或 Form1.jsl [设计] 选项卡或按 F7 切换到设计视图。

  2. 添加第二个按钮并设置其属性,如下所示:

    • 将“Text”属性设置为“Say Goodbye”

    • (Name) 属性设置为 btnPrivate

    • 将“Modifiers”属性设置为“Private”。 这使得继承自Form1的表单无法修改btnPrivate的属性。

  3. 双击“Say Goodbye”按钮以便为“Click”事件添加事件处理程序。 将以下代码行置于事件过程中:

    MessageBox.Show("Goodbye!")
    
    MessageBox.Show("Goodbye!");
    
  4. 生成 菜单中,选择 生成 BaseForm 库 生成类库。

    生成库后,可以创建一个新项目,该项目继承自刚刚创建的表单。

创建包含继承自基窗体的窗体的项目

  1. 在“文件”菜单中,选择“添加”,然后选择“新建项目”,以打开“添加新项目”对话框。

  2. 创建一个名为 InheritanceTest 的 Windows 窗体应用程序。

添加继承的窗体

  1. 解决方案资源管理器中,右键单击 继承测试 项目,选择 添加,然后选择 新建项

  2. 在“添加新项”对话框中,选择“Windows 窗体”类别(如果有类别列表),然后选择“继承的窗体”模板。

  3. 保留默认名称 Form2,然后单击 添加

  4. 在“继承选择器”对话框中,将“BaseFormLibrary”项目的“Form1”选为要从中继承的窗体并单击“确定”

    这将在 InheritanceTest 项目中创建一个窗体,该窗体派生自 BaseFormLibrary中的窗体。

  5. 如果设计器中继承的窗体 (Form2) 尚未打开,双击将其打开

    在设计器中,继承的按钮上角有一个符号 (Visual Basic 继承符号的屏幕截图。),指示它们是继承的。

  6. 选择“Say Hello”按钮,并查案调整大小图柄。 由于此按钮受到保护,继承者可以移动它、调整大小、更改其标题,并进行其他修改。

  7. 选择专有的“Say Goodbye”按钮,请注意它不具有调整大小图柄。 此外,在 属性 窗口中,此按钮的属性灰显,表示无法修改它们。

  8. 如果使用 Visual C#:

    1. 解决方案资源管理器中,右键单击 InheritanceTest 项目中的 Form1,然后选择 删除。 在出现的消息框中,单击 “确定” 以确认删除。

    2. 打开Program.cs文件并将行 Application.Run(new Form1()); 更改为 Application.Run(new Form2());

  9. 解决方案资源管理器中,右键单击 继承测试 项目,然后选择 设置为启动项目

  10. 解决方案资源管理器中,右键单击 继承测试 项目,然后选择 属性

  11. 在“InheritanceTest”属性页中,将“启动对象”设置为继承的窗体 (Form2)

  12. F5 运行应用程序,并观察继承窗体的行为。

后续步骤

用户控件的继承的工作方式大致相同。 打开新的类库项目并添加用户控件。 将构成控件放在它上并编译项目。 打开另一个新的类库项目,并添加对已编译类库的引用。 另外,尝试将继承的控件(通过“添加新项”对话框)添加至项目并使用“继承选择器”。 添加用户控件,并更改 Inherits 语句(在 Visual C# 中为:)。 有关详细信息,请参阅如何:继承 Windows 窗体

另请参阅