演练:演示可视化继承

更新:2010 年 9 月

利用可视继承,可以看到基窗体上的控件并添加新控件。 在本演练中,将创建一个基窗体并将其编译成类库。 然后将此类库导入另一个项目中,并创建一个从该基窗体继承的新窗体。 通过此演练,您将学会如何执行以下任务:

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

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

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

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

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

提示

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置

警告

并非所有控件都支持来自基窗体的可视化继承。 下列控件不支持本演练中描述的方案:

    WebBrowser

    ToolStrip

    ToolStripPanel

    TableLayoutPanel

    FlowLayoutPanel

    DataGridView

继承窗体中的这些控件总是为只读的,无论您使用哪一种修饰符(private、protected 或 public)。

方案步骤

第一步是创建基窗体。

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

  1. 从**“文件”菜单中依次选择“新建”“项目”,打开“新建项目”**对话框。

  2. 创建一个名为 BaseFormLibrary 的 Windows 窗体应用程序。 有关详细信息,请参见如何:创建新的 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 [Design]”、“Form1.cs [Design]”或“Form1.jsl [Design]”**选项卡切换到设计视图,或者按 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 窗体应用程序。 有关详细信息,请参见如何:创建新的 Windows 窗体应用程序项目

添加继承的窗体

  1. 在**“解决方案资源管理器”中右击“InheritanceTest”项目,选择“添加”,然后选择“新建项”**。

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

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

  4. 在**“继承选择器”对话框中,从“BaseFormLibrary”项目中选择“Form1”作为要从其中继承的窗体,然后单击“确定”**。

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

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

    在设计器中,继承的按钮的上角带有一个符号 (VisualBasicInheritanceSymbol 屏幕快照),指示它们是继承而来。

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

  7. 选择私有的 Say Goodbye 按钮,请注意它没有大小调整柄。 另外,在**“属性”**窗口中,此按钮的属性将变灰,指示它们不能进行修改。

  8. 如果使用的是 Visual C#,请执行以下操作:

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

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

  9. 在**“解决方案资源管理器”中右击“InheritanceTest”项目,然后选择“设为启动项目”**。

  10. 在**“解决方案资源管理器”中右击“InheritanceTest”项目,然后选择“属性”**。

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

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

后续步骤

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

请参见

任务

如何:继承 Windows 窗体

参考

“继承选择器”对话框

Windows 窗体演练

其他资源

Windows 窗体可视化继承

Windows 窗体

修订记录

日期

修订记录

原因

2010 年 9 月

更正了相关步骤。

客户反馈