演练:演示可视化继承
通过 Visual 继承,可以查看基本表单上的控件和添加新控件。 在本演练中,你将创建基窗体,并将其编译到类库。 将此类库导入另一个项目,并创建一个从基窗体继承的新窗体。 在本演练中,你将学会如何执行以下任务:
创建包含基窗体的类库项目。
添加具有可修改基窗体的派生类的属性的按钮。
添加基窗体的继承者无法修改的按钮。
创建包含从
BaseForm
继承的窗体的项目。
最后,本演练将显示继承的窗体上私有控件和受保护控件之间的差异。
注意
并非所有控件都支持从基窗体执行 Visual 继承。 以下控件不支持本演练中描述的情景:
无论使用何种修饰符(private
protected
或 public
),继承的窗体中的这些控件始终为只读。
创建包含基窗体的类库项目
在 Visual Studio 的“文件”菜单中,选择“新建”>“项目”以打开“新建项目”对话框。
创建一个名为
BaseFormLibrary
的 Windows 窗体应用程序。若要创建类库(而非标准 Windows 窗体应用程序),请在“解决方案资源管理器”中右键单击“BaseFormLibrary”项目节点,然后选择“属性”。
在项目属性中,将“输出类型”从“Windows 应用程序”更改为“类库”。
从“文件”菜单上,选择“全部保存”以将项目和文件保存到默认位置。
接下来的两步是将按钮添加至基窗体。 为了演示 visual 继承,请通过设置按钮的 Modifiers
属性为它们指定不同的访问级别。
添加基窗体的继承者可修改的按钮
在设计器中打开“Form1”。
在“工具箱”的“所有 Windows 窗体”选项卡上,双击“按钮”以向窗体添加按钮。 使用鼠标来定位按钮和调整其大小。
在“属性”窗口中,设置按钮的下列属性:
将“Text”属性设置为“Say Hello”。
将 (Name) 属性设置为“btnProtected”。
将“Modifiers”属性设置为“Protected”。 这使继承自“Form1”的窗体能够修改“btnProtected”属性。
双击“Say Hello”按钮以为“Click”事件添加事件处理程序。
将以下代码行添加到事件处理程序:
MessageBox.Show("Hello, World!")
MessageBox.Show("Hello, World!");
添加基窗体的继承者无法修改的按钮
通过单击代码编辑器上方的“Form1.vb [Design], Form1.cs [Design], or Form1.jsl [Design]”选项卡或按 F7,切换到设计视图。
按如下方式添加第二个按钮并设置其属性:
将“Text”属性设置为“Say Goodbye”。
将 (Name) 属性设置为“btnPrivate”。
将“Modifiers”属性设置为“Private”。 这使继承自“Form1”的窗体无法修改“btnPrivate”属性。
双击“Say Goodbye”按钮以便为“Click”事件添加事件处理程序。 将以下代码行放入事件过程:
MessageBox.Show("Goodbye!")
MessageBox.Show("Goodbye!");
在“生成”菜单上,选择“生成 BaseForm 库”来生成类库。
构建库后,可创建从刚创建的窗体继承的新项目。
创建包含继承自基窗体的窗体的项目
在“文件”菜单上,选择“添加”,然后选择“新建项目”以打开“添加新项目”对话框。
创建一个名为
InheritanceTest
的 Windows 窗体应用程序。
添加继承的窗体
在“解决方案资源管理器”中,右键单击“InheritanceTest”项目,然后依次选择“添加”和“新建项”。
在“添加新项”对话框中,选择“Windows 窗体”类别(若有类别列表),然后选择“继承的窗体”模板。
保留
Form2
的默认名称,然后单击“添加”。在“继承选择器”对话框中,将“BaseFormLibrary”项目的“Form1”选为要从中继承的窗体并单击“确定”。
此操作将在“InheritanceTest”项目中创建由“BaseFormLibrary”中的窗体派生的窗体。
如果设计器中继承的窗体 (Form2) 尚未打开,双击将其打开。
在设计器中,继承的按钮上角有一个符号 (),指示它们是继承的。
选择“Say Hello”按钮,并查案调整大小图柄。 由于此按钮受保护,继承者可以对其进行移动、调整大小、更改标题和进行其他修改。
选择专有的“Say Goodbye”按钮,请注意它不具有调整大小图柄。 此外,在“属性”窗口中,此按钮的属性呈灰显,指示不能修改。
如果你使用的是 Visual C#:
在“解决方案资源管理器”中,右键单击“InheritanceTest”项目中的“Form1”,然后选择“删除”。 在显示的消息框中,单击“确定”以确认删除。
打开 Program.cs 文件并将
Application.Run(new Form1());
行更改为Application.Run(new Form2());
。
在“解决方案资源管理器”中,右键单击“InheritanceTest”项目,然后选择“设为启动项目”。
在“解决方案资源管理器”中,右键单击“InheritanceTest”项目,然后选择“属性”。
在“InheritanceTest”属性页中,将“启动对象”设置为继承的窗体 (Form2)。
按 F5 运行此应用程序,并观察继承的窗体的行为。
后续步骤
用户控件的继承方式大致相同。 打开新的类库项目并添加用户控件。 在其上放置构成控件,然后编译项目。 打开另一个新的类库项目,并添加对已编译的类库的引用。 另外,尝试将继承的控件(通过“添加新项”对话框)添加至项目并使用“继承选择器”。 添加用户控件,并更改 Inherits
(Visual C# 中的 :
)语句。 有关详细信息,请参阅如何:继承 Windows 窗体。