
教学要求:
了解多重窗体应用程序的适用范围与特点,掌握多重窗体应用程序建立的主要步骤;了解多重窗体程序的执行与保存特点,了解Visual Basic工程的结构特点(标准模块、窗体模块、Sub Main过程);掌握闲置循环与DoEvents语句的用法。
知识点:
多重窗体应用程序;多重窗体应用程序的建立、执行、保存;Visual Basic工程的结构特点;闲置循环与DoEvents语句。
内容导航:
一、建立多重窗体应用程序
(一)多重窗体程序设计有关的语句和方法
1.Load语句。格式:Load 窗体名
2.Unload语句。格式:Unload 窗体名
3.Show方法。格式:[窗体名.]Show[模式]
4.Hide方法。格式:[窗体名.]Hide
(二)建立界面
窗体的添加方法有如下4种:
方法一:单击“工程”菜单中的“添加窗体”命令;
方法二:用鼠标右键单击“工程资源管理器”的任何项目,在弹出的快捷菜单中选择“添加”,单击“添加窗体”命令;
方法三:单击工具栏中的“添加窗体”命令;
方法四:通过组合键Alt+P,F。
二、多重窗体程序的执行与保存
(一)指定启动窗体
在缺省情况下,应用程序中的第一个窗体被指定为启动窗体。应用程序开始运行时,此窗体就被显示出来。要改变启动窗体的执行方法如下:
从“工程”菜单中,选取“工程属性”命令,选取“通用”选项卡,在“启动对象”中,选取要作为新启动窗体的窗体,最后单击“确定”按钮。
(二)保存多窗体程序
为了保存多窗体程序,通常需要一下两步:
1.保存模块。
2.保存工程
(三)装入多窗体程序
装入多窗体程序和装入单窗体程序一样,只要打开工程文件,工程中包括的其他文件便会自动装入内存,而不用一一打开。
三、Visual Basic工程结构
Visual Basic工程分为3个层次:工程级(全局)、模块级和过程级,这对变量与类型的定义和使用都是很重要的。
(一)标准模块
标准模块也称全局模块或总模块,有全局变量声明、模块层声明及通用过程等几部分组成。其中全局变量声明放在标准模块的首部,因为每个模块都有可能要求它自己的具有唯一名字的全局变量。全局变量声明总是在启动时执行。标准模块没有事件过程。
(二)窗体模块
窗体模块包括3部分内容,即声明部分、通用过程部分和事件过程部分。
在声明部分中,用Dim语句声明窗体模块所需要的变量,因而其作用域为整个窗体模块。注意,在窗体模块代码中,声明部分一般放在最前面,而通用过程和事件过程的位置没有严格;
通用过程:用户定义的供事件过程调用的过程;
事件过程:发生某事件时的事件处理程序,是响应特定事件而执行的指令。
(三)Sub Main过程
在含有多个窗体或多个工程的应用程序中,有时候需要在显示多个窗体之前对一些条件进行初始化,这就需要在启动程序时执行一个特定的过程。在Visual Basic中,这样的过程称为启动过程,并命名为Sub Main。
四、闲置循环与DoEvents语句
Visual Basic提供了闲置循环与DoEvents语句
DoEvents既可作为语句,也可以作为函数使用,一般格式为:
[窗体号 = ]DoEvents[ () ]
DoEvents作为函数返回当前装入内存的窗体号。
训练:
一、选择题:
1.下面关于DoEvents语句的叙述中,正确的是________。
A)DoEvents语句提供了在某个循环中将控制权交给操作系统的可能,可以改造和控制语句的执行顺序
B)DoEvents语句没有返回值
C)DoEvents语句是一条非执行语句
D)即使用DoEvents语句,也不能改变语句执行的顺序
2.在VB中,要将一个窗体从内存中释放,应使用的语句是________。
A)Unload B)Hide C)Show D)Load
3.当一个工程中有多个窗体时,其中的启动窗体是________。
A)第一个添加的窗体
B)在“工程属性”中指定的启动对象
C)启动VB后建立的窗体
D)最后一个添加的窗体
4.当窗体得到焦点时,首先触发________事件。
A)Activate B)Initialize C)OnFocus D)GetFocus
5.在VB中,要使一个窗体不可见,但不从内存中释放,应使用的语句是________。
A)Hide B)Load C)Show D)Unload
6.与From1.Show方法效果相同的是________。
A)Visible.Form1=True
B)Visible.Form1=False
C)Form1.Visible=True
D)Form1.Visible=False
7.要从自定义对话框Form2中退出,可以在该对话框的“退出”按钮Click事件过程中使用________语句。
A)Hide.Form2 B)Form2.Hide C)Unload.Form2 D)Form2.Unload
8.以下关于多重窗体程序的叙述中,错误的是________。
A)用Hide方法不但可以隐藏窗体,而且能清除内存中的窗体
B)在多重窗体程序中,各窗体的菜单是彼此的
C)在多重窗体程序中,可以根据需要指定启动窗体
D)在多重窗体程序中,需要单独保存每个窗体
9.假定一个工程文件由一个窗体Form1和两个标准模块Model及1Model2组成。
Model1代码如下:
Public x As Integer
Public y As Integer
Sub s1()
x=1
s2
End Sub
Sub s2()
y=10
Form1.Show
End Sub
Model2代码如下:
Sub Main()
s1
End Sub
其中Sub Main()被设为启动对象,程序运行后,各模块的执行顺序是________。
A)Form1 Model1 Model2 B)Model1 Model2 Form1
C)Model2 Model1 Form1 D)Model2 Form1 Model1
10.以下叙述中错误的是________。
A)一个工程只能有一个Sub Main过程
B)窗体的Show方法是将指定的窗体装入内存并显示该窗体
C)窗体的Hide方法和Unload语句作用效果相同
D)如工程文件中有多个窗体,可以根据需要指定一个窗体为启动窗体
11.以下叙述中错误的是________。
A)一个应用程序可以只有一个窗体
B)一个应用程序通常由多个窗体组成
C)一个窗体一定对应一个窗体文件,所以一个应用程序只能包含一个窗体
D)一个应用程序只能有一个启动窗体
12.如果要在应用程序建立另一个窗体,正确的操作方法是________。
A)在“文件”下拉菜单中选择“添加窗体”命令
B)在“工程”下拉菜单中选择“添加窗体”命令
C)在“编辑”下拉菜单中选择“添加窗体”命令
D)在“工具”下拉菜单中选择“添加窗体”命令
13.在当前工程中添加一个新的窗体,下列操作方法错误的是________。
A)在“工程”下拉菜单中选择“添加窗体”命令
B)从工具栏中选择工程,单击其下拉菜单,从列出的列表中选择“添加窗体”命令
C)在工程资源管理器中的工程图标上右键单击鼠标,打开快捷菜单,选择“添加(Add)”选项下的“窗体(Form)”选项
D)在代码窗口或属性窗口中输入一个新的窗口名称,即自动建立一个新的窗体
14. 程序运行时要使某一个窗体显示出来,应该使用________。
A)Unload方法 B)Hide方法 C)Show方法 D)Load语句
15.使用Public Const语句声明一个全局的符号常量时,该语句应该放在________。
A)过程中 B)窗体模块的通用声明段
C)标准模块的通用声明段 D)窗体模块或标准模块的通用声明段
16.工程中有两个普通窗体Form1和Form2,其中Form1中有一个按钮,启动程序后,单击Form1中的按钮,输出结果为________。
Private Sub Command1_Click()
Print "A"
Form2.Show vbModal
Print "B"
End Sub
A)Form1中显示A,Form2中显示B B)Form1中显示A,Form2中无显示
C)Form1中无显示,Form2中显示AB D)Form1中无显示,Form2中显示B
17.要设置工程中某一个窗体作为启动窗体,必须的操作步骤是________。
A)打开“属性窗口”,选择作为启动窗体的窗体名称
B)打开“代码窗口”,选择作为启动窗体的窗体名称
C)打开“工程窗口”,选择作为启动窗体的窗体名称
D)打开“窗体设计”窗口,选择作为启动窗体的窗体名称
18.进行多窗体设计时,“窗体资源管理器”窗口是很有用的窗口。下列关于“资源管理器”窗口功能的说法中,错误的是________。
A)在“资源管理器”窗口中可以设置某一个窗体作为启动窗体
B)在“资源管理器”窗口中显示与工程有关的文件和对象
C)在“资源管理器”窗口中工程名左边方框内标有“—”号表示该工程已经被移走
D)在“资源管理器”窗口中双击.frm的文件名,能够打开该文件的窗体,以及与之对应的属性窗口、代码窗口
19.要将名为MyForm的窗体在“资源管理器”窗口中显示出来,正确的使用方法是________。
A)MyForm Show B)Show.MyForm C)MyForm Load D)MyForm.Show
20.不能在标准模块中使用的是________。
A)私有变量 B)公共变量 C)通用过程 D)事件过程
21.可以在窗体模块的通用声明段中声明________。
A)全局变量 B)全局常量 C)全局数组 D)全局用户自定义类型
22.为了使窗体从屏幕上消失但仍在内存中,所使用的方法或语句为________。
A)Show B)Hide C)Load D)Unload
二、填空题:
1.语句Form3.Show 0 表示________;语句Form3.Show 1 表示________。
2.新建一个工程时,系统自动把创建的________作为启动窗体。
3.为了把一个窗体装入内存,所使用的语句为________;而为了清除内存中指定的窗体,所使用的语句为________。
4.为了显示一个窗体,所使用的方法为________;而为了隐藏一个窗体,所使用的方法为________。
5.VB应用程序由________、________、________等三种模块组成。
6.要将某窗体定义为MDI子窗体,需要将其________属性设置为True。
7.SDI指________界面,MDI指________界面。
8.当最大化一个子窗体时,它的标题会与MDI窗体的标题组合在一起并显示在________上。
9.________方法可以独占CPU而不影响其他程序。
10.假定建立了一个工程,该工程包括两个窗体Form1和Form2,启动窗体Form1。在Form1中画一个命令按钮Command1,程序运行后,要求当单击命令按钮时,Form1窗体小时,显示Form2,请将程序补充完整。
Private Sub Command1_Click()
________ Form1
Form2 ________
End Sub
11.用Show方法显示窗体时,如果后面带有参数________,则必须关闭该窗体才能在其他窗体上进行操作。
12.显示一个窗体的方法是________,将窗体从内存中清除的方法是________。
13.在标准模块中用Dim或Private关键字定义的变量是________变量,他们只能在程序的________模块中使用。全局变量必须在________中定义。
14.启动窗体在________对话框中指定,为打开该对话框,可执行________菜单中的________选项。
三、编程题:
1.设计一个程序,有三个窗体,窗体用户界面如图所示。输入四门课的成绩,计算总分及平均分。
2.建立一个含有两个窗体和一个标准模块的工程,在第一个窗体上有两个文本框Text1和Text2,两个命令按钮Command1和Command2,每单击Command1按钮,将在Text1文本框中显示一道数学题,用户在Text2文本框中输入答案。单击Command1时还要对答案进行验证,每个正确答案获得10分。单击Command2将打开Form2窗体,在其中的文本框中显示全部试题和答案。在标准模块种定义一个包含试题正文和答案两个成员的自定义数组,并定义一个自定义数组类型的全局变量。在加载Form1窗体时对数组进行初始化。
3.建立多窗体程序,设计一个“古诗选读”程序,该程序由6个窗体构成,其中一个窗体为封面窗体,一个窗体为列表窗体,其余4个窗体分别用来显示4首诗的内容。程序运行后,先显示封面窗体,接着显示列表窗体,在该窗体中列出所要阅读的古诗目录(4个),双击某个目录后,在另一个窗体的文本框中显示相应的诗文内容,每首诗用一个窗体显示。
