第十三章多窗体程序设计教学要求:了解多重窗体应用程序的适用范围与特点,掌握多重窗体应用程序建立的主要步骤;了解多重窗体程序的执行与保存特点,了解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)Load3.当一个工程中有多个窗体时,其中的启动窗体是________。
A)第一个添加的窗体B)在“工程属性”中指定的启动对象C)启动VB后建立的窗体D)最后一个添加的窗体4.当窗体得到焦点时,首先触发________事件。
A)Activate B)Initialize C)OnFocus D)GetFocus5.在VB中,要使一个窗体不可见,但不从内存中释放,应使用的语句是________。
A)Hide B)Load C)Show D)Unload6.与方法效果相同的是________。
A)=TrueB)=FalseC)=TrueD)=False7.要从自定义对话框Form2中退出,可以在该对话框的“退出”按钮Click事件过程中使用________语句。
A) B) C) D)8.以下关于多重窗体程序的叙述中,错误的是________。
A)用Hide方法不但可以隐藏窗体,而且能清除内存中的窗体B)在多重窗体程序中,各窗体的菜单是彼此独立的C)在多重窗体程序中,可以根据需要指定启动窗体D)在多重窗体程序中,需要单独保存每个窗体9.假定一个工程文件由一个窗体Form1和两个标准模块Model及1Model2组成。
Model1代码如下:Public x As IntegerPublic y As IntegerSub s1()x=1s2End SubSub s2()y=10End SubModel2代码如下:Sub Main()s1End Sub其中Sub Main()被设为启动对象,程序运行后,各模块的执行顺序是________。
A)Form1 Model1 Model2 B)Model1 Model2 Form1C)Model2 Model1 Form1 D)Model2 Form1 Model110.以下叙述中错误的是________。
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"vbModalPrint "B"End SubA)Form1中显示A,Form2中显示B B)Form1中显示A,Form2中无显示C)Form1中无显示,Form2中显示AB D)Form1中无显示,Form2中显示B17.要设置工程中某一个窗体作为启动窗体,必须的操作步骤是________。
A)打开“属性窗口”,选择作为启动窗体的窗体名称B)打开“代码窗口”,选择作为启动窗体的窗体名称C)打开“工程窗口”,选择作为启动窗体的窗体名称D)打开“窗体设计”窗口,选择作为启动窗体的窗体名称18.进行多窗体设计时,“窗体资源管理器”窗口是很有用的窗口。
下列关于“资源管理器”窗口功能的说法中,错误的是________。
A)在“资源管理器”窗口中可以设置某一个窗体作为启动窗体B)在“资源管理器”窗口中显示与工程有关的文件和对象C)在“资源管理器”窗口中工程名左边方框内标有“—”号表示该工程已经被移走D)在“资源管理器”窗口中双击.frm的文件名,能够打开该文件的窗体,以及与之对应的属性窗口、代码窗口19.要将名为MyForm的窗体在“资源管理器”窗口中显示出来,正确的使用方法是________。
A)MyForm Show B) C)MyForm Load D)20.不能在标准模块中使用的是________。
A)私有变量 B)公共变量 C)通用过程 D)事件过程21.可以在窗体模块的通用声明段中声明________。
A)全局变量 B)全局常量 C)全局数组 D)全局用户自定义类型22.为了使窗体从屏幕上消失但仍在内存中,所使用的方法或语句为________。
A)Show B)Hide C)Load D)Unload二、填空题:1.语句 0 表示________;语句 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()________ Form1Form2 ________End Sub11.用Show方法显示窗体时,如果后面带有参数________,则必须关闭该窗体才能在其他窗体上进行操作。