• 沒有找到結果。

在一个复杂的应用程序中,一个工程可以包含多个窗体,即多重窗体(MultiForm),指的 是应用中有多个窗口界面,这些窗口分别显示在屏幕上,它们之间没有绝对的从属关系,根据 完成的任务相互联系在一起。 

3.4.1  建立多重窗体应用程序  1.多重窗体的添加

在多重窗体的应用程序中,要建立的界面由多个窗体组成。要向当前工程中添加新的窗 体有以下三种方法:

(1)选择“工程”→“添加窗体”命令,可实现新窗体的添加。这些窗体的默认名称为  Form1,Form2 等。

(2)单击工具栏中的“添加窗体”按钮,完成添加新窗体。

(3)在“工程资源管理器”窗口中,右击要添加新窗体的“工程” ,在弹出的快捷菜单 中选择“添加”→“添加窗体”选项,也可以创建新窗体。 

2.移除窗体

要将一个窗体从工程中移除,有以下两种方法:

(1)在“工程资源管理器”窗口中选定要移除的窗体,选择“工程”→“移除”命令。

(2)在“工程资源管理器”窗口中,右击要移除的窗体,在弹出的快捷菜单中选择“移 除”选项。

注意:移除的窗体并没有被删除,只是从该工程中移除走了。 

3.设置启动窗体

一个具有多个窗体的应用程序中,必须有一个启动窗体。默认情况下,应用程序会把设 计阶段建立的第一个窗体作为启动窗体,在应用程序开始运行时,此窗体首先被显示出来。实 际应用中如果要设置其他窗体为启动窗体,可以采用以下操作方法:

(1)选择“工程”→“工程属性”命令,弹出“工程属性”对话框;或者在“工程资源 管理器”窗口中选定工程并右击,在弹出的快捷菜单中选择“工程属性”选项,弹出“工程属 性”对话框,如图 3­21 所示。

图 3­21  “工程属性”对话框

(2)选择“通用”选项卡,在“启动对象”下拉列表框中选择要作为启动窗体的窗体。

(3)单击“确定”按钮。 

3.4.2  多重窗体程序设计常用的方法

前面介绍的窗体的属性和方法同样适用于多重窗体程序设计。在多重窗体的程序设计中,

经常要用到四种方法:Load 方法、Show 方法、Hide 方法、Unload 方法。 

1.Load 方法 

Load 方法的语法格式:

Load [窗体名称]

使用  Load  方法调用的窗体只是被装入内存,并不会显示出来,与此同时会产生一个  Form_Load()事件。 

2.Show 方法 

Show 方法的语法格式:

[窗体名称.] Show [窗体模式值]

使用 Show 方法可以显示被调用的窗体, 如果在调用 Show 方法之前没有把窗体调入内存,

那么 Show 方法会自动地把窗体调入内存。

窗体模式值是可选项,取值为 0 或 1,对应 Show 方法的两种模式。当取值为 0 或被省略 时,执行  Show 方法显示的窗体是“无模式的” ,用户可以激活其他窗体,对其他窗体进行操 作;当取值为 1 时,执行 Show 方法显示的窗体是“模式的” ,用户不能对其他窗体进行操作,

直到该窗体关闭为止。一般应用程序的各种对话框大多是“模式的” ,使用这种模式,只有关 闭了对话框才能进行其他操作。 

3.Hide 方法 

Hide 方法的语法格式:

[窗体名称.]Hide

使用 Hide 方法可以隐藏窗体,实际上是把窗体的 Visible 属性值设为 False。窗体被隐藏 之后,虽然在屏幕上不可见,但它并没有从内存中移走。如果在调用 Hide 方法时窗体还没有 加载,那么 Hide 方法将加载该窗体。 

4.Unload 方法 

Unload 方法的语法格式:

Unload [窗体名称]

其功能是从内存中清除指定的窗体。

另外在多重窗体程序设计中,经常用到关键字  Me,它代表当前窗体的默认名称, 

Unload  Me  语句可将当前窗体从内存中卸载。 

3.4.3  多重窗体程序设计举例

多重窗体的应用程序设计过程中,首先应分析应用需求,将其功能划分为不同的部分。

在创建窗体时, 除了设计好各窗体自身要完成的功能外, 还要考虑窗体之间的内在联系与调用 关系,指定启动窗体,安排好各窗体之间的衔接。程序运行后显示的第一个窗体通常称为启动 窗体。

【例  3­24】为了方便调试程序,将本章所有例题放在一个工程中,再增加一个启动窗体

(假设为 Form24) ,并将该窗体设置为启动窗体,设置方法如图 3­21 所示,然后在该窗体中 增加若干命令按钮,如图 3­22 所示。程序执行后单击任意一个按钮则启动该按钮所对应的窗 体,避免了每次设置启动窗体的麻烦。

图 3­22  设置启动窗体 程序如下:

Private Sub Command1_Click(Index As Integer)  '按钮“例题 1”的单击事件 Form1.Show  '显示“例题 1”窗体

Form24.Hide  End Sub 

Private Sub Command2_Click(Index As Integer)  '按钮“例题 2”的单击事件 Form2.Show  '显示“例题 2”窗体

Form24.Hide  '隐藏启动窗体 End Sub

此外,还需要编写“例题 1”中 Form1 的 Unload 事件。

Private Sub Form_Unload(Cancel As Integer)  ' 卸载“例题 1”窗体时显示启动窗体 Form24.Show 

End Sub

其他窗体的显示和隐藏程序类似,请读者自行完成。 

3.4.4    Sub Main 过程

有时一个应用程序启动执行时,不需要加载任何窗体,而是需要首先执行一段程序代码,

完成一些初始化工作。如根据条件来决定加载哪一个窗体。要实现以上功能,可以在标准模块 中建立一个名为 Main 的 Sub 过程,把首先需要执行的程序代码写在该 Sub  Main 过程中,并 且将 Sub Main 过程指定为启动对象,从而完成应用程序与窗体间的衔接。标准模块可以有多 个,但 Sub Main 过程只能有一个,而且其名称必须是 Main。

当工程中含有已被设置为启动对象的 Sub Main 过程时, 应用程序在运行时总是先执行 Sub  Main 过程。

设置标准模块中的 Sub Main 过程为启动对象的方法是:在如图 3­21 所示的“工程属性”

对话框中,选择“通用”选项卡,从“启动对象”下拉列表框中选择 Sub Main。

【例  3­25】Sub  Main  过程示例。在例  3­24  的基础上添加一个标准模块,取名为“主程 序.bas” 。在标准模块的代码窗口中建立一个 Sub Main 程序,如图 3­23 所示。

选择“工程”→“添加模块”命令添加标准模块 Module1。在 Module1 的代码窗口中编写

代码(如图 3­23 所示),再设置 Sub Main 过程为“启动对象” 。

图 3­23  建立标准模块

启动程序后,自动调用标准模块,出现输入框后按照用户输入的序号调用不同的窗体。 

相關文件