友情提示:同学您好,此页面仅供预览,在此页面学习不会被统计哦! 请进入学习空间后选择课程学习。

实验目的

1. 掌握窗体对象的常用属性。

2. 掌握窗体对象的常用事件和方法。

3. 理解窗体的生命周期。

4. 了解在VB的一个工程中使用多个窗体的方法。

 

实验内容

一、窗体及窗体生命周期演示程序

1. 设计目标

设计多窗体及窗体生命周期演示程序,学会在一个工程中使用多个窗体,理解窗体生命周期中的四个阶段,掌握常用的窗体对象的方法和事件。该程序的用户界面如图


在多窗体及窗体生命周期应用程序中,窗体模块共包含3个窗体:Form1Form2Form3,其中Form1是该工程中的启动窗体,其运行界面如图8-1所示。在Form1中包含14个命令按钮控件,其Caption属性分别如下:

Ø  Command1Caption属性为:“退出应用程序”

Ø  Command2Caption属性为:“测试窗体2创建”

Ø  Command3Caption属性为:“测试窗体2加载”

Ø  Command4Caption属性为:“测试窗体3创建”

Ø  Command5Caption属性为:“测试窗体3加载”

Ø  Command6Caption属性为:“Load Form2

Ø  Command7Caption属性为:“Load Form3

Ø  Command8Caption属性为:“Show Form2

Ø  Command9Caption属性为:“Show Form3

Ø  Command10Caption属性为:“Hide Form2

Ø  Command11Caption属性为:“Hide Form3

Ø  Command12Caption属性为:“卸载窗体2

Ø  Command13Caption属性为:“卸载窗体3

Ø  Command14Caption属性为:“卸载窗体1

由于在程序运行后,屏幕上并没有出现窗体Form2Form3,所以我们并不清楚这两个窗体到底处于窗体生命周期的哪个状态,所以我们想通过单击命令按钮Command1Command2Command3Command4进行测试,并将测试结果显示在两个文本框中,这当然要通过运行一定的代码才能达到目的。另外,单击其他命令按钮所达到的功能,可通过该命令按钮上显示的内容看出。

2. 建立应用程序的用户界面并设置有关对象的属性

1)根据图8-1所示,添加Form1上的有关对象并设置相关的属性,在Form1中共包含14个命令按钮控件、2个标签控件和2个文本框控件。

2)在工程中添加Form2,并将该窗体的背景颜色设置为黄色。

3)在工程中添加Form3,并将该窗体的背景颜色设置为青绿色。

3. 设计程序代码

根据需要,编写以下程序代码。

1)单击命令按钮Command1,可退出应用程序。为实现该功能,应在以下事件中添加什么样的程序代码?

PrivateSub Command1_Click()

                           

EndSub

2)单击命令按钮Command2,应能测试出窗体Form2是否被创建。但怎样才能做到这一点呢?我们知道,当一个窗体经历了创建状态的话,则一定会引发Form_Initialize事件,若我们在窗体Form2Form_Initialize事件中将某个变量设置为一个特定的值,则可根据该变量拥有什么样的值来确定窗体Form2是否被创建。不过需要注意的是,为了让Form2Form_Initialize事件和Form1Command2_Click事件能够共同使用一个变量,需要添加一个标准模块,并用Public进行声明。

在工程中添加一个标准模块,并在其中加入以下代码。

Publica As Integer   '根据a的值判断窗体Form2是否被创建

Publicb As Integer   '根据b的值判断窗体Form3是否被创建

Publicx As Integer   '根据x的值判断窗体Form2是否被加载

Publicy As Integer   '根据y的值判断窗体Form3是否被加载

Form2Form_Initialize事件加入以下代码。

PrivateSub Form_Initialize()    'Form2对象

    a =1

EndSub

Form1Command2_Click事件中加入以下代码。

PrivateSub Command2_Click()

    Ifa = 1 Then

         Text1.Text = "Form2 被创建了!"

    Else

         Text1.Text = "Form2 还没有被创建!"

    End If

EndSub

3)根据前面的讨论,我们可以编写代码实现Command3命令按钮的功能,补充完整以下程序代码。

PrivateSub Form_Load()    'Form2对象

                                

EndSub

 

PrivateSub Command3_Click()

    Ifx = 1 Then

         Text2.Text =                       

    Else

         Text2.Text =                        

    End If

EndSub

4)补充完整以下程序代码,实现Comamnd4命令按钮的功能。

PrivateSub Form_Initialize()    'Form3对象

                                 

EndSub

 

PrivateSub Command4_Click()

 

 

                                 

EndSub

5)补充完整以下程序代码,实现Comamnd5命令按钮的功能。

PrivateSub Form_Load()   'Form3对象

                                 

EndSub

 

PrivateSub Command5_Click()

 

 

                                 

EndSub

6)补充完整以下程序代码,实现Comamnd6命令按钮的功能。

PrivateSub Command6_Click()

                                    

EndSub

7)补充完整以下程序代码,实现Comamnd7命令按钮的功能。

PrivateSub Command7_Click()

                                    

EndSub

8)补充完整以下程序代码,实现Comamnd8命令按钮的功能。

PrivateSub Command8_Click()

                                    

EndSub

9)补充完整以下程序代码,实现Comamnd9命令按钮的功能。

PrivateSub Command9_Click()

                                    

EndSub

10)补充完整以下程序代码,实现Comamnd10命令按钮的功能。

PrivateSub Command10_Click()

                                    

EndSub

11)补充完整以下程序代码,实现Comamnd11命令按钮的功能。

PrivateSub Command11_Click()

                                    

EndSub

12)要卸载Form2,可在Command12_Click事件中使用Unload语句,但为了防止出现错误的操作,我们可利用Form2窗体的QueryUnload事件,提供一个停止卸载窗体Form2的机会,实现代码如下。

PrivateSub Command12_Click()

    UnloadForm2

EndSub

 

PrivateSub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

    Dimr As Integer

    r = MsgBox("是否要卸载?",4 + 48, "卸载Form1")

    If r = 7 Then

       Cancel = 1

    End If

EndSub

13)补充完整以下代码,实现对Form3的卸载。

PrivateSub Command13_Click()

                                          

EndSub

 

PrivateSub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

   

 

                                            

EndSub

14)补充完整以下代码,实现对Form1的卸载。

PrivateSub Command14_Click()

                                            

EndSub

 

PrivateSub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

   

 

                                            

EndSub

编写完成以上代码,并调试通过。

二、了解多窗体及窗体生命周期的特性

运行以上程序,并回答以下问题。

1)当我们卸载窗体Form2后,再测试该窗体是否加载,会产生什么样的信息?应如何修改程序代码避免这种错误的发生?

 

 

                                                                            

2)在没有加载窗体Form2之前,就卸载它,会出现什么情况?这时请测试该窗体是否创建和加载?根据程序显示的信息说明为什么会产生这种情况?

 

 

                                                                            

3)当我们加载Form2并卸载它之后,再次加载Form2时,是否还会经历窗体的创建状态?自己设计程序代码,用来判断这个问题。

 

 

 

 

                                                                            

4)总结窗体对象的常用属性、事件和方法。

 

 

 

 

                                                                            

5)本次实验中,我们使用了什么语句用来加载和卸载一个窗体?