top
Loading...
VisualBasicCOM基礎講座之事件
相對來說,事件的使用是比較簡單的。在使用前,我們必須先定義該事件,這就意味著通知Visual Basic什么事件被調用。一個事件可能有自己的參數,例如,一個Command按鈕有一個Click(單擊)事件,它沒有參數。另外,文本編輯框有一個KeyPress事件,它通過一個叫"KeyAscii"的值來處理相關內容。



定義一個事件是在一個類的通用聲明部分添加類似下面的代碼:

Public Event MyEventName(PossArguments As String, Etc As Variant)

然后在代碼調用RaiseEvent方法來激發一個事件。就像下面的代碼一樣:

RaiseEvent MyEventName("PossArgs", "Etc")

為了更好地說明上述添加和激發事件的過程,我們舉一個例子。首先,定義一個事件:

在CDog類的通用聲明部分添加下列代碼:

Public Event Awake()

在CDog類中添加Sleep子過程:

Public Sub Sleep()

Dim i As Long
For i = 1 To 1000000
DoEvents: DoEvents: DoEvents
exit
RaiseEvent Awake
End Sub

代碼中,一開始做一些1000000次無用的循環,計算機短暫停頓后,Sleep子過程激發Awake事件。

但Awake事件產生后,我們應該讓程序作相應的反應呢?當然,利用命令按鈕是最簡單的,只要在代碼窗口的列表中選擇命令按鈕對象。

但是那樣的話,我們必然需要一個控件,而且所見的內容都在表單上。這里我們純粹使用相應的代碼,并且是不可見的。

當然用代碼來接收事件,還需要額外的操作:

在表單代碼窗口中的通用聲明部分,添加下列代碼:

Dim WithEvents MyDog As CDog

該代碼不同于以前的MyDog聲明,它有個關鍵詞WithEvents用來通知Visual Basic該對象可以按收任何事件,而且該對象必須接收事件。

刪除命令按鈕中的所有代碼;并在Command1中添加下列代碼:

Set MyDog = New CDog
MyDog.Name = "Billy"
MyDog.Bark
MyDog.Sleep

該代碼簡單地將MyDog設置成CDog的一個新的實例,設置Name后,調用Bark,最后運行Sleep子過程。

現在添加一些代碼來相應Awake事件。

在Form代碼窗口中,從對象下拉列表中選擇"MyDog";

在"MyDog"的"Awake"事件中,添加下列代碼:

Private Sub MyDog_Awake()

MsgBox "Your pooch has awoken!"

End Sub

好了,現在就可以測試了。

按F5運行程序;

單擊Command按鈕;

這樣,當小狗Bark后,開始打盹,最后結束時還被你叫醒。真是神奇!

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗