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采用事件驅動的運行機制,程序的執行順序不是按預先設計好的固定程序流程進行的,而是通過響應不同的事件執行不同的事件過程程序代碼段。響應的事件順序不同,執行的程序代碼段的順序也不同,即事件發生的順序決定了整個程序的執行流程。