VB语言程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 对象和事件的基本概念

VB采用面向对象程序设计方法,程序的核心是对象。本节将从使用的角度简述对象的有关概念。

1.3.1 对象和类

在VB中,对象是一组程序代码和数据的集合,可以作为一个基本运行实体来处理。例如,窗体、标签、文本框、命令按钮等都是对象,整个应用程序也可以是一个对象。实际上“对象”是一个很广泛的概念,要理解程序设计中“对象”的概念,还必须有一些“类”的知识。

在现实世界中,具有相同属性和行为的事物往往不止一个,面向程序设计技术为了提高软件的可重用性,就用“类”来抽象定义同类对象。类和对象的关系好像是模型和成品的关系,类是创建对象的模型,对象则是类的实例,是按模型生产出来的成品。例如在Word中,为创建文档提供的文档模板好比是类,用这些模板创建的文档就好比是对象。

在VB中,工具箱中的每一个控件,如文本框、标签、命令按钮等,都代表一个类。当将这些控件添加到窗体上时就创建了相应的对象。例如,图1.11所示的工具箱中的TextBox控件是类,它确定了该类的属性、方法和事件,由它生成的两个Text对象,是TextBox类的实例,它们具有由类定义的公共特征和功能(即对象的属性、方法和事件)。编程人员也可以根据需要修改对象的属性。

图1.11 对象与类

在VB编程中,大多数工作是在跟对象打交道。用户可以轻松地创建对象和使用对象,而不必关心对象的底层运作。VB将用户从烦琐的底层程序设计中解放出来,这正是VB易学易用的原因。

1.3.2 对象的属性和方法

对象具有属性、事件和方法三要素。建立一个对象后,其操作通过与该对象有关的属性、事件和方法来实现。

1.属性

每个对象都有其特征,称之为对象的属性(Property)。不同的对象有不同的属性。例如,命令按钮具有名称、标题、大小、位置等属性;文本框具有名称、文本内容、最大字符数、字体等属性。

每一个对象属性一般都有一组默认值,如文本框的名称默认为Text1,Text2,…,其中的文本内容(初始值)也默认为Text1,Text2,…

可以通过修改对象的属性值来改变对象的特征,设置对象的属性值有两种方法:

(1)利用“属性窗口”设置对象的属性(操作见1.2.3节)。

(2)在程序中设置对象的属性。

可以使用赋值语句,动态地修改对象的属性,其一般格式为

[对象名.]属性名=属性值

其中,“对象名.属性名”是VB引用对象属性的方法。如果针对当前的窗体,可省略该窗体对象名。例如,给一个对象名为Command1的命令按钮的标题(Caption)属性赋值为字符串“确定”,则在程序代码中的书写形式为

Commandl.Caption="确定"

以下是其他一些例子:

Label1.Caption="输入数"  ′设置标签的标题
Text1.Maxlength=10     ′设置文本框的最大字符数为10
Caption="计算平方数"    ′设置当前窗体的标题,省略了当前窗体名

2.方法

方法(Method)是对象能够执行的动作。它是对象本身包含的函数或过程,用于完成某种特定的功能。例如,例1.1中的Print是窗体的一种方法,用来向窗体输出信息。

方法只能在程序代码中使用,其调用格式为

[对象名.] 方法名 [(参数)]

有的方法需要提供参数,而有的方法是不带参数的。例如:

Form1.Cls          ′清除窗体Form1上的内容
Print "Visual Basic 6.0"  ′在当前窗体上显示
Form2.Show         ′显示窗体Form2

1.3.3 事件、事件过程及事件驱动

1.事件

事件(Event)是由VB系统预先设置好的、能够被对象识别的动作。例如,鼠标单击(Click)或者双击(DblClick)就是最常见的事件。此外,窗体装载(Load)、按键(KeyPress)、鼠标移动(MouseMove)等,都是事件。

对象的事件是固定的,用户不能建立新的事件。不同的对象能识别的事件也不一定相同,如窗体能识别加载事件(Load),但其他控件则不可能识别这一事件。

每个对象所能识别的事件,在设计阶段可以从代码窗口中该对象的过程框的下拉列表框中看到,如图1.12右侧所示的是窗体对象所能识别的事件。

图1.12 窗体对象所能识别的事件

2.事件过程

当事件被用户触发(如单击时触发Click事件)或被系统触发(如加载窗体时触发Load事件)时,对象就会对该事件做出响应,响应某个事件后所执行的程序代码就是事件过程(Event Procedure)。换言之,事件过程是用来完成事件发生时所要执行的操作。

事件过程的一般格式如下:

Private Sub 对象名_事件名()
     处理事件的程序代码
End Sub

例如,用户在窗体上设置一个文本框Text1和一个命令按钮Command1,并编写命令按钮的单击(Click)事件过程为:

Private Sub Command1_Click()
    Text1.FontName="黑体"    ′FontName是字体的属性
    Text1.ForeColor=vbBlue    ′ForeColor是前景颜色的属性
    Text1.Text="VB程序设计"
End Sub

该事件过程有3条语句。运行程序时,当用户单击命令按钮Command1控件时,将触发单击(Click)事件,从而执行该事件过程,在文本框中显示“VB程序设计”,其字体为黑体,颜色为蓝色。

事件过程命名格式为:对象名_事件名。例如,命令按钮Command1的Click事件过程名为Command1_Click。但有一个例外,就是不管窗体采用什么名称,在窗体事件过程名中只能使用Form,如Form_Click,而不是Form1_Click。

说明:(1)事件是对象能响应的一个动作,该动作触发后能完成什么功能,由用户编制的“事件过程”决定。VB程序设计主要是编写相关的事件过程。

(2)通常VB对象可以识别一个以上的事件,每个事件都可以通过一个对应的事件过程进行响应。在设计程序时,并不需要编写所有事件的事件过程,而只需要编写需要的事件过程。

3.事件驱动

VB应用程序运行时,通常先加载和显示一个窗体,之后等待下一个事件(一般由用户操作来触发)的发生。当某一事件发生时,程序将执行此事件的事件过程。当完成一个事件过程后,程序又会进入等待状态,直到下一个事件发生为止。如此周而复始地执行,直到程序结束。

由此可见,程序的执行完全是靠“事件”驱动的,也就是说,“事件”是程序执行的原因和动力。VB采用事件驱动的运行机制,程序的执行顺序不是按预先设计好的固定程序流程进行的,而是通过响应不同的事件执行不同的事件过程程序代码段。响应的事件顺序不同,执行的程序代码段的顺序也不同,即事件发生的顺序决定了整个程序的执行流程。