vb.net入门——Windows窗体的继承


上一章,我们学了vb.net入门——窗体中的事件处理后,这里就来看看Windows窗体的继承。

以前VB一直被诟病不已,无法继承也是它的一大罪名,呵呵,现在微软终于把这个功能加进来了。继承是一个很大的知识点,我们这篇文章作为入门级别的,就不深入讨论它,只停留在窗体的继承上面先,随着知识的深入,我们自然而然就能游刃有余了。

在程序应用中,我们不可避免地需要重复利用已经做好的窗体,通过从基窗体继承来创建新 Windows 窗体是重复最佳工作成果的快捷方法,而不必每次需要窗体时都从头开始重新创建一个。要创建一个继承的窗体,可以使用“继承选择器”对话框继承窗体,还可以通过编程方式继承窗体。

一、使用“继承选择器”对话框继承窗体

继承窗体或其他对象的最简单方法是使用“继承选择器”对话框。使用它,就可利用已经在其他解决方案中创建的代码或用户界面。提示:为了使用“继承选择器”对话框从窗体继承,包含该窗体的项目必须已经从“生成”——“生成”中生成为可执行文件或 DLL。

1、从“项目”菜单,选择“添加继承的窗体”,如下图一所示: 

图一:选择菜单

2、“添加新项”对话框打开,从左侧的“类别”窗格中选择“本地项目项”。从右侧的“模板”窗格中选择“继承的窗体”,并在“名称”框中命名它,如下图二所示: 

图二:选择“继承的窗体”

3、 单击上图二的“打开”按钮继续进行, “继承选择器”对话框打开,如下图三所示,列表中列出了目前可以选择的可继承的组件(一般默认是该项目中已经生成的类)。如果要添加新的组件,可以单击“浏览”按钮,从选择对话框中定位到包含所需窗体或模块的项目,单击 .exe 或 .dll 文件的名称以选择它。

图三:选择要继承的组件

现在我们可以在图三所示的组件列表中选择一个可以继承的组件了,这里选择的是Form1窗体。单击确认后,我们的项目中就新建了一个名为Form3的窗体,如下图四所示

图四:基窗体和继承窗体的对比

仔细观察图四中的两个窗体,它们的样式都是一样的,如果我们对基窗体的做任何的界面修改,都会提示“必须重新生成项目,以使对 WindowsApplication6.Form1 所做的更改显示在任何打开的设计器内”。

但是继承的窗体上属于继承于基窗体的控件将被标记标志符号,现在请把鼠标移动到图四继承的窗体中Button1控件的符号上,会出现提示框显示该控件在基窗体上所具有的安全级别,如下图五所示:

选定该控件后,有一个边框指示控件在基窗体上所具有的安全级别,与不同的安全性级别对应的边框颜色在下表中列出。

控件的安全性级别 通过“设计器”和代码编辑器可与“继承的窗体”进行的交互 图例
Public 带有尺寸柄的标准边框:控件可调整大小和移动。
该控件可由声明它的类从内部访问或者由其他类
从外部访问。
Protected 带有尺寸柄的标准边框:控件可调整大小和移动。
该控件可由声明它的类和任何从父类继承的类从内部访问,但无法由外部类访问。
Friend 不带尺寸手柄的蓝白边框,在窗体上显示,属性在“属性”窗口中可见。但是,控件的所有方面均视为只读。无法移动控件或调整控件的大小,也无法更改其属性。如果该控件是其他控件的容器(如分组框),那么无法添加新控件而且也无法移除现有控件,即使那些控件是公共的。
该控件仅能由包含它的程序集的其他成员访问。
Private 不带尺寸手柄的蓝白边框,在窗体上显示,属性在“属性”窗口中可见。但是,控件的所有方面均视为只读。无法移动控件或调整控件的大小,也无法更改其属性。如果该控件是其他控件的容器(如分组框),那么无法添加新控件而且也无法移除现有控件,即使那些控件是公共的。
该控件只能由声明它的类访问。

二、以编程方式继承窗体

我们可以用代码的方式来继承窗体或其它的类,在类中,添加对命名空间的引用,该命名空间包含要从其继承的窗体。

先建立一个Form2窗体,然后在Form2的类定义中,将引用添加到要从其继承的窗体。引用应包括包含该窗体的命名空间,后面跟一个句点,然后是基窗体本身的名称,代码如下所示:

Public Class Form2

Inherits Namespace1.Form1

上面我们讲了如何添加窗体的继承,下面我们就是用一个实例来从头到尾演示如何进行窗体的可视继承。

第一步:创建基窗体

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

2、创建一个名为 MyForm 的 Windows 应用程序。

3、若要创建类库(而不是标准的 Windows 应用程序),请右击解决方案资源管理器中的“MyForm”项目节点并选择“属性”。 

4、在项目的属性中,将输出类型从“Windows 应用程序”更改为“类库”,然后单击“确定”。 

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

第二步:添加基窗体的继承者可修改的按钮

1、在“工具箱”的“Windows 窗体”选项卡上双击“Button”,将一个按钮添加到窗体中。使用鼠标将按钮定位,并调整其大小。 

2、在“属性”窗口中,设置该按钮的下列属性:

将 Text 属性设置为 "你好"。 

将 (Name) 属性设置为 btnProtected。 

将 Modifiers 属性设置为 Protected。这样,从 Form1 继承的窗体就可以修改 btnProtected 的属性。

3、双击 "你好"按钮,为 Click 事件添加事件处理程序。 

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

MessageBox.Show("你好,巧巧读书网")

第三步:添加不能由基窗体的继承者修改的按钮

1、单击代码编辑器之上的“Form1.vb [设计]”选项卡或按 SHIFT+F7,切换到设计视图。 

2、添加第二个按钮并如下设置其属性: 

将 Text 属性设置为"退出"。 

将 (Name) 属性设置为 btnPrivate。 

将 Modifiers 属性设置为 Private。这样,从 Form1 继承的窗体就无法修改 btnPrivate 的属性。 

3、双击"退出"按钮,为 Click 事件添加事件处理程序。将以下代码行放入事件过程中: 

MessageBox.Show ("Goodbye!")

4、从“生成”菜单中选择执行“生成解决方案”,以生成类库,这样就可以新建一个从刚创建的窗体继承的项目。 

第四步:创建包含从基窗体继承的窗体的项目

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

2、创建一个名为 MyTest 的 Windows 应用程序。

第五步:添加继承的窗体

1、右击 MyTest 项目,然后依次选择“添加”和“添加继承的窗体”。 

2、在“添加新项”对话框中,验证“继承的窗体”已选定,然后单击“打开”。 

3、在“继承选择器”对话框中,从 MyForm 项目中选择 Form1 作为要从其中继承的窗体,然后单击“确定”。这样我们就在 MyTest 项目中创建一个从 MyForm 中的窗体派生的窗体。

4、通过双击打开 Windows 窗体设计器中的继承窗体。在 Windows 窗体设计器中,继承按钮的上角带有一个标志符号,表示它们是从基类窗体继承的。

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

6、选择私有的"退出"按钮,它是没有大小调整柄的。另外,在“属性”窗口中,此按钮的属性将变灰,说明它的所有属性是不能进行修改。最后,将鼠标指针移动到此按钮上,此时将出现工具提示,指示控件的继承方式。

7、右击解决方案资源管理器中的 MyTest 项目并选择“设为启动项目”。 

8、右击解决方案资源管理器中的 MyTest 项目并选择“属性”。在“MyTest 属性页”对话框中,将“启动对象”设置为继承的窗体。 

9、按 F5 键运行应用程序,观察继承窗体的行为。 

对于窗体继承,我们就学到这里,继承是一个很大的知识点,我们需要在一步一步熟悉vb.net编程中掌握它,下一章我们就学学 Windows 窗体的一个特殊形式——对话框的应用。

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3