1、請注意Change 事件程序可協調在各控制項間顯示的資料,或使它們同步處理。例如,可用一個捲軸的 Change 事件程序,更新一個 TextBox 控制項中捲軸Value 屬性的設定。或者可以利用 Change 事件程序在一個工作區域裡顯示資料和公式,而在另一個區域裡顯示結果。Change 事件程序在更新檔案系統的控制項(DirListBox,DriveListBox 和 FileListBox)中的各屬性時也是有用的。譬如,可更新一個 DirListBox 控制項 Path 屬性的設定,以反應一 DriveListBox 控制項的 Drive 屬性設定的改變。注意 一個 Change 事件程
2、序有時會導致一個相關事件。這種情況在控制項的 Change 事件程序改變該控制項的內容時會發生。譬如,透過程式碼去設定一個決定該控制項的值的屬性,比方說,對一個 TextBox 控制項的 Text 屬性之類的設定。若要避免相關事件:如果可能的話,應避免撰寫會改變該控制項內容的 Change 事件程序。如果撰寫了這種程序,應設定一個旗標來防止在目前進行的事件中,做更進一步的變化。避免建立兩個或兩個以上 Change 事件程序會相互影響的控制項。例如,兩個 TextBox 控制項在其 Change 事件期間會相互更新。對 HScrollBar 和 VScrollBar 控制項,應避免在其 Chan
3、ge 事件中使用 MsgBox 函數或陳述式。 回上頁Click 事件此事件是發生在按下一個物件,並接著放開滑鼠鍵時。此外也會發生在一個控制項的值改變時。對 Form 物件來說,該事件會發生在按下空白區域或未啟用之控制項時;對控制項來說,此事件會發生在使用者:用滑鼠的左鍵或右鍵按一下控制項。對 CheckBox、CommandButton、Listbox 或 OptionButton 控制項來說,Click 事件只會在按一下滑鼠左鍵時引發。藉由使用方向鍵或按下滑鼠鍵,可選取 ComboBox 或 ListBox 控制項中的項目。當 CommandButton、OptionButton 或 Ch
4、eckBox 控制項具有駐點時,按住 SPACEBAR 鍵。當表單中有 Default 屬性為 True 的 CommandButton 控制項時,按下 ENTER 鍵。當表單中有 Cancel 按鈕 Cancel 屬性設定為 True 的 CommandButton 控制項時,按下 ESC 鍵。按下控制項之對應鍵。例如,如果一個 CommandButton 控制項的標題是確定(O),則按下 ALT+O 可引發此事件。您也可以在程式碼中引發 Click 事件,透過:將一個 CommandButton 控制項的 Value 屬性設定為 True。將一個 OptionButton 控制項的 Val
5、ue 屬性設定為 True。改變一個 CheckBox 控制項的 Value 屬性設定。語法Private Sub Form_Click( )Private Sub object_Click(index As Integer)Click 事件的語法具有以下幾個單元:index 一個整數,用以獨一地辨認在控制項陣列中的一個控制項。請注意Click 事件程序常用在 CommandButton 控制項,Menu 物件或 PictureBox 控制項,以執行指令或類似指令的動作。對其它可應用的控制項來說,使用這個事件也可引發一個動作以回應控制項的變化。從程式碼中,可用一個控制項的 Value 屬性來測
6、試該控制項的狀態。按一下控制項除了會產生 Click 事件外,還會產生 MouseDown 和 MouseUp 事件。這三種事件發生的順序會根據控制項的不同而有所差異。例如,對 ListBox 和 CommandButton 控制項來說,這些事件是按照以下的順序發生的:MouseDown、Click、MouseUp。但對 FileListBox、Label 或 PictureBox 控制項來說,這些事件是依照以下的順序發生:MouseDown、MouseUp 和 Click。設計事件程序時,應先確認它們的動作不會衝突。如果在應用程式中事件順序? 颩垠n的話,則應先對控制項進行測試,確定事件的順
7、序。附註 若要區別滑鼠的左、中、右按鈕,應使用 MouseDown 和 MouseUp 事件。如果在 Click 事件中有程式碼,DblClick 事件將不會被引發,因為 Click 事件是先被引發的事件。其結果是按下滑鼠鍵的動作會被 Click 事件攔截,並使 DblClick 事件不會發生。回上頁DblClick 事件當在一個物件上按和放滑鼠按鈕並再次按和放滑鼠按鈕時,該事件發生。對於表單而言,當按兩下被禁用的控制項或表單的空白區域時,DblClick 事件發生。對於控制項而言,DblClick 事件在以下情形下發生:用滑鼠左鍵按兩下控制項。按兩下 Style 屬性設定為 1(Simple
8、) 的 ComboBox 控制項中的項目,或者在 FileListBox , ListBox , DBCombo 或 DBList 控制項中的項目。語法Private Sub Form_DblClick ( )Private Sub object_DblClick (index As Integer)單元 描述object 物件運算式,其值是適用於清單中的一個物件。index 如果控制項在控制項陣列.內,就用來識別該控制項。請注意如果控制項在一個控制項陣列內,則 Index 引數識別這個控制項。可以使用 DblClick 事件程序執行一個隱藏的作業,如按兩下圖示來開啟一個視窗或文件。也可用這類
9、程序執行單一作業的多個步驟,例如用按兩下在清單方塊中指定一項並關閉對話方塊。要在 Visual Basic 中產生這類快速效果,可以使用帶有預設按鈕的清單方塊的或疊層排列檔案清單方塊的 DblClick 事件程序;所謂預設按鈕就是 Default 屬性設定為 True 的 CommandButton 控制項。作為清單方塊 DblClick 事件程序的一部份,只需簡單呼叫預設按鈕的 Click 事件。對於那些接收 Mouse 事件的物件,事件按這樣的次序發生:MouseDown, MouseUp, Click, DblClick 和 MouseUp。如果 DblClick 在系統按兩下時間限制內
10、沒有出現,則物件識別另一個 Click 事件。按兩下時間限制可以變化,因為使用者可在控制台設定按兩下的速度。當與這些相關事件程序打交道時,必須確保它們的活動不發生衝突。不接受 DblClick 事件的控制項可能接受兩次按一下而不是 DblClick 事件。附註 要想區別滑鼠的左、右、中按鈕,使用 MouseDown 和 MouseUp 事件。如果在 Click 事件中有程式碼,DlbClick 事件將永遠不會觸發。回上頁DragDrop 事件該事件發生在完成一個拖放動作(就是將一個控制項拖曳到一個物件上,並釋放滑鼠鍵);或使用 Drag 方法,且其 action 參數設定為 2 (Drop)時
11、。語法Private Sub Form_DragDrop(source As Control, x As Single, y As Single)Private Sub MDIForm_DragDrop(source As Control, x As Single, y As Single)Private Sub object_DragDrop(index As Integer,source As Control, x As Single, y As Single)DragDrop 事件語法具有以下幾個單元:source 被拖曳的控制項。可用此參數將屬性和方法包括在事件的程序中 例如,Sour
12、ce.Visible = 0。x, y 是一個指定目前滑鼠指標在接收端表單或控制項中水平 (x) 和垂直 (y) 位置的數字。這些座標值通常用接收端的座標系統來表示,該座標是以 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 屬性來設定的。請注意DragDrop 事件程序是用來控制在拖曳動作完成時將會發生的情況。例如,可將來源控制項移到一個新的位置,或將檔案從一個位置複製到另一個位置。當 source 參數中可能使用多個控制項時:使用有 If 陳述式的 TypeOf 關鍵字,來確定用 source 的控制項的型態。使用該控制項的 Tag 屬性來標認一控制
13、項,並接著使用 DragDrop 事件程序。附註 使用 DragMode 屬性和 Drag 方法來指定拖曳起始的方式。開始拖曳後,可使用 DragOver 事件程序來處理位於 DragDrop 事件之前的事件。回上頁DragOver 事件它發生在拖放動作進行時。可使用此事件對滑鼠指標在一個有效目標上的進入、離開或停留等進行監視。滑鼠指標的位置將決定接收此事件的目標物件。語法Private Sub Form_DragOver(source As Control, x As Single, y As Single, state As Integer)Private Sub MDIForm_Drag
14、Over(source As Control, x As Single, y As Single, state As Integer)Private Sub object_DragOver(index As Integer,source As Control, x As Single, y As Single, state As Integer)DragOver 事件語法具有以下幾個單元:source 正在被拖曳的控制項。可用此參數在事件程序中引用各屬性和方法 例如, Source.Visible = False。x, y 是一個指定目前滑鼠指標在接收端表單或控制項中,水平 (x) 和垂直(y
15、)位置的數字。這些座標值通常用接收端的座標系統來表示,該座標係透過 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 屬性而設定的。state 一個整數,對應於一個控制項相對於接收端表單或控制項在拖曳的轉變狀態:0 = 移入(來源控制項正向一個目標範圍內拖曳)。1 = 離去(來源控制項正向一個目標範圍外拖曳)。2 = 跨越(來源控制項在目標範圍內從一個位置移到了另一位置)。請注意使用 DragOver 事件程序,可決定出在拖曳開始後和控制項放在目標上之間發生什麼事。例如,您可透過反白目標(由程式碼設定 BackColor 或 ForeColor 屬性)或者
16、顯示一特定的拖曳指標(由程式碼設定 DragIcon 或 MousePointer 屬性),來檢驗有效的目標範圍。使用 state 參數可決定一些關鍵轉變點的動作。例如,當 state 的設定為 0(移入)時,將可能的目標反白;而當 state 的設定為 1(離去)時,可回復該物件先前的外觀。在 state 的設定為 0(移入),而物件接收到 DragOver 事件時:如果來源控制項放在該物件上,則該物件就接收一個 DragDrop 事件。如果來源控制項沒有放在該物件上,則當 state 的設定為 1(離去)時,該物件就接收另一個 DragOver 事件。附註 使用 DragMode 屬性和
17、Drag 方法可指定拖曳起始的模式。關於 source 參數的使用技巧,請參閱 DragDrop 事件描述主題部份。回上頁DropDown 事件該事件發生在 ComboBox 控制項的清單部份正要放下的時候;如果 ComboBox 控制項的 Style 屬性設定為 1(Simple Combo)時,則此事件不會發生。語法Private Sub object_DropDown(index As Integer)DropDown 事件的語法具有以下幾個單元:請注意DropDown 事件程序可以在使用者選取之前,對 ComboBox 清單進行最後的各種更新。這可以讓您用 AddItem 或 Remo
18、veItem 方法從該清單新增或刪除項目。在需要控制項間有相互作用時,這種靈活性是很有用的。例如,要根據在 OptionButton 群組中的選擇,決定載入到 ComboBox 清單的內容時,就可以利用該事件。回上頁Error 事件僅在未執行 Visual Basic 程式碼,且產生資料存取的錯誤時,才發生此事件。語法Private Sub object_Error (index As Integer, dataerr As Integer, response As Integer)Error 事件的語法具有以下幾個單元:單元 描述object 物件運算式,指定適用於清單中的物件。index
19、控制項陣列,可用來識別控制項。dataerr 錯誤代碼response 對應您所希望回應的代碼,細節詳述於設定中。設定Response 的設定有:常數 值 說明vbDataErrContinue 0 繼續。vbDataErrDisplay 1 (預設值)顯示錯誤訊息。請注意這些常數會列示在瀏覽物件的 Visual Basic(VB)物件程式庫中。通常在執行階段中提供處理錯誤的功能。然而,當有下列情形時,即使沒有程式碼正在執行,也會發生執行階段的錯誤:使用者按下 Data 控制項按鈕。Data 控制項自動開啟資料庫,並且在 Form_Load 事件後載入 Recordset 物件。自訂控制項執行
20、一些諸如 MoveNext 方法、AddNew 方法或 Delete 方法 等動作。若錯誤起因於上述動作時,則會產生 Error 事件。如果未對 Error 事件編寫事件程序時,Visual Basic 將顯示與該錯誤相關的資訊。發生在 Form_Load 事件之前的錯誤是不可處理的,也不會引發 Error 事件。舉例而言,在設計階段時如果將資料控制項的屬性設成指向一個不知名的資料庫表,就會發生不可處理的錯誤。回上頁GotFocus 事件發生在物件獲得駐點時;可以透過使用者動作,如 TAB 切換,或按一下物件,或者在程式碼中用 SetFocus 方法來改變駐點。而表單只有在所有可見的控制項都不
21、能作用時,才會接收駐點。語法Private Sub Form_GotFocus()Private Sub object_GotFocus(index As Integer)GotFocus 事件語法具有以下幾個單元:請注意通常,GotFocus 事件程序用於指定,當控制項或表單首次接收駐點時發生的動作。例如,透過給表單上每個控制項附加一個 GotFocus 事件程序,就可以顯示簡要描述或狀態列資訊,來對使用者提供指導。根據獲取駐點的控制項不同,透過使其有效、禁止或者是顯示其它控制項的模式,也可以提供出可以看見的要訣。附註 一個控制項僅當其 Enabled 和 Visible 屬性都設定為 Tr
22、ue 時,才能接收駐點。在 Visual Basic 中要自訂鍵盤介面,以移動駐點,設定表單上控制項的定位順序或指定其對應鍵。回上頁ItemCheck 事件當 ListBox 控制項的 Style 屬性設定為 1(核取方塊),且選定或清除 ListBox 控制項中某個項目的核取方塊時,就會發生此事件。語法Private Sub object_ItemCheck(index As Integer)ItemCheck 事件語法具有以下幾個單元:object 一個物件運算式,其值是適用於清單中的一個物件。Index 一個整數,用來識別清單方塊中的項目。請注意附註 在清單項目反白顯示時,ItemChe
23、ck 事件並不會發生;明白地說,只有在清單項目的核取方塊被選定或清除時才會發生。您可用程式碼使 ListBox 的 Selected 陣列中的元素改變(其 Style 屬性設定為 1),來引發 ItemCheck 事件。ItemCheck 事件會出現在 Click 事件之前。回上頁KeyDown, KeyUp 事件發生在一個物件具有駐點時,使用者按下( KeyDown )或放開 ( KeyUp ) 按鍵時。(若要解譯ANSI 字元,則應使用 KeyPress 事件。)語法Private Sub Form_KeyDown(keycode As Integer, shift As Integer)
24、Private Sub object_KeyDown(index As Integer,keycode As Integer, shift As Integer)Private Sub Form_KeyUp(keycode As Integer, shift As Integer)Private Sub object_KeyUp(index As Integer,keycode As Integer, shift As Integer)KeyDown 和 KeyUp 事件語法具有以下幾個單元:keycode 是一個按鍵碼,例如 vbKeyF1 ( F1 鍵)或 vbKeyHome ( HOME
25、 鍵)。要指定按鍵碼,可使用瀏覽物件中 Visual Basic ( VB ) 物件程式庫中的常數。shift 在事件發生時回應 SHIFT、CTRL 和 ALT 鍵狀態的一個整數。shift 參數是一位元欄位,以最低的位元對應 SHIFT 鍵(位元 0 ),CTRL 鍵(位元 1 )和 ALT 鍵(位元 2 )。這些位元分別對應於值 1、2 和 4。可以有一些、所有或沒有任何位元的設定來指明有一些、所有? 峔S有任何鍵被按下。例如,如果 CTRL 和 ALT 這兩個鍵都被按住,則 shift 的值為 6。請注意對於這兩個事件來說,帶駐點的物件接收所有按鍵訊息。表單只有在沒有可見的和可作用的控
26、制項時才可以獲得駐點。雖然 KeyDown 和 KeyUp 事件可適用於大多數按鍵,不過它們一般常用於:延伸的字元鍵,如功能鍵等。巡覽鍵。組合鍵。區別數字鍵台和一般的數字鍵。當需要同時對按住和放開一個鍵回應時,就可使用 KeyDown 和 KeyUp 事件程序。下列的情況請勿使用 KeyDown 和 KeyUp 事件:表單有一個 CommandButton 控制項,且 Default 屬性設定為 True 時的 ENTER 鍵。表單有一個 CommandButton 控制項,且 Cancel 屬性設定為 True 時的 ESC 鍵。TAB 鍵。KeyDown 和 KeyUp 用兩種參數來解譯每
27、個字元的大寫和小寫:keycode 顯示實際按鍵(將 A 和 a 作為同一個鍵回應),和 shift 顯示 shift + key 鍵的狀態,且回應 A 或 a 其中之一。如果要測試 shift 參數,可使用該參數中定義各位元的 shift 常數。該常數有下列值:vbShiftMask 1 SHIFT 鍵的位元遮罩。VbCtrlMask 2 CTRL 鍵的位元遮罩。VbAltMask 4 ALT 鍵的位元遮罩。該常數用作位元遮罩。它可用來測試按鍵的任何組合。測試一個條件時,首先應依每種結果指定一暫時的整數變數,然後將 shift 與一個位元遮罩進行比對。如下例,可用 And 運算子和 shif
28、t 參數一起來測試是否大於 0。指示該修飾鍵是否被按下:語法ShiftDown = (Shift And vbShiftMask) > 0可按此例在一個程序中測試任何條件的組合:If ShiftDown And CtrlDown Then附註 如果 KeyPreview 屬性設為 True,則表單會比其上的控制項先接收到此事件。您可用 KeyPreview 屬性來建立全域 ( global ) 鍵盤處理常式。回上頁KeyPress 事件發生在使用者按下並放開一個 ANSI 鍵時。語法Private Sub Form_KeyPress(keyascii As Integer)Private Sub object_KeyPress(index As Integer,keyascii As Integer)KeyPress 事件的語法具有以下幾個單元:keyascii 一個整數,會傳回一個標準數字 ANSI 碼,Keyascii 係藉由傳址方式傳遞,若改變之可傳送一個不同的字元給物件。將 keyascii 改變為 0 時可取消按鍵訊息,這樣一來物件便接收不到字元。請注意具有駐點的物件可接收該事件。表單僅
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1