视觉继承使你能够查看基本窗体上的控件并添加新控件。 在本演练中,你将创建一个基窗体并将其编译为类库。 将此类库导入另一个项目,并创建一个从基窗体继承的新窗体。 在本演练中,你将了解如何:
创建包含基窗体的类库项目。
添加具有可修改基窗体的派生类的属性的按钮。
添加不能由基窗体继承者修改的按钮。
创建包含从
BaseForm
继承的窗体的项目。
最后,本演练将显示继承的窗体上私有控件和受保护控件之间的差异。
谨慎
并非所有控件都支持从基窗体执行 Visual 继承。 以下控件不支持本演练中所述的方案:
无论使用何种修饰符(private
protected
或 public
),继承的窗体中的这些控件始终为只读。
创建一个包含基础窗体的类库项目
在 Visual Studio 的“
文件 ”菜单中,选择“新建 项目” ,打开“新建项目”对话框。 创建一个名为
BaseFormLibrary
的 Windows 窗体应用程序。若要创建类库而不是标准 Windows 窗体应用程序,请在 解决方案资源管理器中 右键单击 baseFormLibrary 项目节点,然后选择 属性。
在项目的属性中,将 输出类型 从 Windows 应用程序 更改为 类库。
从“文件”菜单中,选择 “全部保存”,将项目和文件保存到默认位置。
接下来的两步是将按钮添加至基窗体。 为了演示视觉继承,可以通过设置按钮 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[设计]、Form1.cs [设计]或 Form1.jsl [设计] 选项卡或按 F7 切换到设计视图。
添加第二个按钮并设置其属性,如下所示:
将“Text”属性设置为“Say Goodbye”。
将 (Name) 属性设置为 btnPrivate。
将“Modifiers”属性设置为“Private”。 这使得继承自Form1的表单无法修改btnPrivate的属性。
双击“Say Goodbye”按钮以便为“Click”事件添加事件处理程序。 将以下代码行置于事件过程中:
MessageBox.Show("Goodbye!")
MessageBox.Show("Goodbye!");
在 生成 菜单中,选择 生成 BaseForm 库 生成类库。
生成库后,可以创建一个新项目,该项目继承自刚刚创建的表单。
创建包含继承自基窗体的窗体的项目
在“文件”菜单中,选择“添加”,然后选择“新建项目”,以打开“添加新项目”对话框。
创建一个名为
InheritanceTest
的 Windows 窗体应用程序。
添加继承的窗体
在 解决方案资源管理器中,右键单击 继承测试 项目,选择 添加,然后选择 新建项。
在“添加新项”对话框中,选择“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”属性页中,将“启动对象”设置为继承的窗体 (Form2)。
按 F5 运行应用程序,并观察继承窗体的行为。
后续步骤
用户控件的继承的工作方式大致相同。 打开新的类库项目并添加用户控件。 将构成控件放在它上并编译项目。 打开另一个新的类库项目,并添加对已编译类库的引用。 另外,尝试将继承的控件(通过“添加新项”对话框)添加至项目并使用“继承选择器”。 添加用户控件,并更改 Inherits
语句(在 Visual C# 中为:
)。 有关详细信息,请参阅如何:继承 Windows 窗体。