vb窗体所有事件4Word文档格式.docx
《vb窗体所有事件4Word文档格式.docx》由会员分享,可在线阅读,更多相关《vb窗体所有事件4Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
請注意Change事件程序可協調在各控制項間顯示的資料,或使它們同步處理。
例如,可用一個捲軸的Change事件程序,更新一個TextBox控制項中捲軸Value屬性的設定。
或者可以利用Change事件程序在一個工作區域裡顯示資料和公式,而在另一個區域裡顯示結果。
Change事件程序在更新檔案系統的控制項(DirListBox,DriveListBox和FileListBox)中的各屬性時也是有用的。
譬如,可更新一個DirListBox控制項Path屬性的設定,以反應一DriveListBox控制項的Drive屬性設定的改變。
注意一個Change事件程序有時會導致一個相關事件。
這種情況在控制項的Change事件程序改變該控制項的內容時會發生。
譬如,透過程式碼去設定一個決定該控制項的值的屬性,比方說,對一個TextBox控制項的Text屬性之類的設定。
若要避免相關事件:
如果可能的話,應避免撰寫會改變該控制項內容的Change事件程序。
如果撰寫了這種程序,應設定一個旗標來防止在目前進行的事件中,做更進一步的變化。
避免建立兩個或兩個以上Change事件程序會相互影響的控制項。
例如,兩個TextBox控制項在其Change事件期間會相互更新。
對HScrollBar和VScrollBar控制項,應避免在其Change事件中使用MsgBox函數或陳述式。
回上頁Click事件此事件是發生在按下一個物件,並接著放開滑鼠鍵時。
此外也會發生在一個控制項的值改變時。
對Form物件來說,該事件會發生在按下空白區域或未啟用之控制項時;
對控制項來說,此事件會發生在使用者:
用滑鼠的左鍵或右鍵按一下控制項。
對CheckBox、CommandButton、Listbox或OptionButton控制項來說,Click事件只會在按一下滑鼠左鍵時引發。
藉由使用方向鍵或按下滑鼠鍵,可選取ComboBox或ListBox控制項中的項目。
當CommandButton、OptionButton或CheckBox控制項具有駐點時,按住SPACEBAR鍵。
當表單中有Default屬性為True的CommandButton控制項時,按下ENTER鍵。
當表單中有Cancel按鈕—Cancel屬性設定為True的CommandButton控制項時,按下ESC鍵。
按下控制項之對應鍵。
例如,如果一個CommandButton控制項的標題是「確定(O)」,則按下ALT+O可引發此事件。
您也可以在程式碼中引發Click事件,透過:
將一個CommandButton控制項的Value屬性設定為True。
將一個OptionButton控制項的Value屬性設定為True。
改變一個CheckBox控制項的Value屬性設定。
語法PrivateSubForm_Click()
PrivateSubobject_Click([indexAsInteger])Click事件的語法具有以下幾個單元:
index一個整數,用以獨一地辨認在控制項陣列中的一個控制項。
請注意Click事件程序常用在CommandButton控制項,Menu物件或PictureBox控制項,以執行指令或類似指令的動作。
對其它可應用的控制項來說,使用這個事件也可引發一個動作以回應控制項的變化。
從程式碼中,可用一個控制項的Value屬性來測試該控制項的狀態。
按一下控制項除了會產生Click事件外,還會產生MouseDown和MouseUp事件。
這三種事件發生的順序會根據控制項的不同而有所差異。
例如,對ListBox和CommandButton
控制項來說,這些事件是按照以下的順序發生的:
MouseDown、Click、MouseUp。
但對FileListBox、Label或PictureBox控制項來說,這些事件是依照以下的順序發生:
MouseDown、MouseUp和Click。
設計事件程序時,應先確認它們的動作不會衝突。
如果在應用程式中事件順序?
颩垠n的話,則應先對控制項進行測試,確定事件的順序。
附註若要區別滑鼠的左、中、右按鈕,應使用MouseDown和MouseUp事件。
如果在Click事件中有程式碼,DblClick事件將不會被引發,因為Click事件是先被引發的事件。
其結果是按下滑鼠鍵的動作會被Click事件攔截,並使DblClick事件不會發生。
回上頁DblClick事件當在一個物件上按和放滑鼠按鈕並再次按和放滑鼠按鈕時,該事件發生。
對於表單而言,當按兩下被禁用的控制項或表單的空白區域時,DblClick事件發生。
對於控制項而言,DblClick事件在以下情形下發生:
用滑鼠左鍵按兩下控制項。
按兩下Style屬性設定為1(Simple)的ComboBox控制項中的項目,或者在FileListBox,ListBox,DBCombo或DBList控制項中的項目。
語法PrivateSubForm_DblClick()
PrivateSubobject_DblClick(indexAsInteger)單元描述
object物件運算式,其值是「適用於」清單中的一個物件。
index如果控制項在控制項陣列.內,就用來識別該控制項。
請注意如果控制項在一個控制項陣列內,則Index引數識別這個控制項。
可以使用DblClick事件程序執行一個隱藏的作業,如按兩下圖示來開啟一個視窗或文件。
也可用這類程序執行單一作業的多個步驟,例如用按兩下在清單方塊中指定一項並關閉對話方塊。
要在VisualBasic中產生這類快速效果,可以使用帶有預設按鈕的清單方塊的或疊層排列檔案清單方塊的DblClick事件程序;
所謂預設按鈕就是Default屬性設定為True的CommandButton控制項。
作為清單方塊DblClick事件程序的一部份,只需簡單呼叫預設按鈕的Click事件。
對於那些接收Mouse事件的物件,事件按這樣的次序發生:
MouseDown,MouseUp,Click,DblClick和MouseUp。
如果DblClick在系統按兩下時間限制內沒有出現,則物件識別另一個Click事件。
按兩下時間限制可以變化,因為使用者可在控制台設定按兩下的速度。
當與這些相關事件程序打交道時,必須確保它們的活動不發生衝突。
不接受DblClick事件的控制項可能接受兩次按一下而不是DblClick事件。
附註要想區別滑鼠的左、右、中按鈕,使用MouseDown和MouseUp事件。
如果在Click事件中有程式碼,DlbClick事件將永遠不會觸發。
回上頁DragDrop事件該事件發生在完成一個拖放動作(就是將一個控制項拖曳到一個物件上,並釋放滑鼠鍵);
或使用Drag方法,且其action參數設定為2(Drop)時。
語法PrivateSubForm_DragDrop(sourceAsControl,xAsSingle,yAsSingle)
PrivateSubMDIForm_DragDrop(sourceAsControl,xAsSingle,yAsSingle)
PrivateSubobject_DragDrop([indexAsInteger,]sourceAsControl,xAsSingle,yAsSingle)DragDrop事件語法具有以下幾個單元:
source被拖曳的控制項。
可用此參數將屬性和方法包括在事件的程序中—例如,Source.Visible=0。
x,y是一個指定目前滑鼠指標在接收端表單或控制項中水平(x)和垂直(y)位置的數字。
這些座標值通常用接收端的座標系統來表示,該座標是以ScaleHeight、ScaleWidth、ScaleLeft和ScaleTop屬性來設定的。
請注意DragDrop事件程序是用來控制在拖曳動作完成時將會發生的情況。
例如,可將來源控制項移到一個新的位置,或將檔案從一個位置複製到另一個位置。
當source參數中可能使用多個控制項時:
使用有If陳述式的TypeOf關鍵字,來確定用source的控制項的型態。
使用該控制項的Tag屬性來標認一控制項,並接著使用DragDrop事件程序。
附註使用DragMode屬性和Drag方法來指定拖曳起始的方式。
開始拖曳後,可使用DragOver事件程序來處理位於DragDrop事件之前的事件。
回上頁DragOver事件它發生在拖放動作進行時。
可使用此事件對滑鼠指標在一個有效目標上的進入、離開或停留等進行監視。
滑鼠指標的位置將決定接收此事件的目標物件。
語法PrivateSubForm_DragOver(sourceAsControl,xAsSingle,yAsSingle,stateAsInteger)
PrivateSubMDIForm_DragOver(sourceAsControl,xAsSingle,yAsSingle,stateAsInteger)
PrivateSubobject_DragOver([indexAsInteger,]sourceAsControl,xAsSingle,yAsSingle,stateAsInteger)DragOver事件語法具有以下幾個單元:
source正在被拖曳的控制項。
可用此參數在事件程序中引用各屬性和方法—例如,Source.Visible=False。
x,y是一個指定目前滑鼠指標在接收端表單或控制項中,水平(x)和垂直(y)位置的數字。
這些座標值通常用接收端的座標系統來表示,該座標係透過ScaleHeight、ScaleWidth、ScaleLeft和ScaleTop屬性而設定的。
state一個整數,對應於一個控制項相對於接收端表單或控制項在拖曳的轉變狀態:
0=移入(來源控制項正向一個目標範圍內拖曳)。
1=離去(來源控制項正向一個目標範圍外拖曳)。
2=跨越(來源控制項在目標範圍內從一個位置移到了另一位置)。
請注意使用DragOver事件程序,可決定出在拖曳開始後和控制項放在目標上之間發生什麼事。
例如,您可透過反白目標(由程式碼設定BackColor或ForeColor屬性)或者顯示一特定的拖曳指標(由程式碼設定DragIcon或MousePointer屬性),來檢驗有效的目標範圍。
使用state參數可決定一些關鍵轉變點的動作。
例如,當state的設定為0(移入)時,將可能的目標反白;
而當state的設定為1(離去)時,可回復該物件先前的外觀。
在state的設定為0(移入),而物件接收到DragOver事件時:
如果來源控制項放在該物件上,則該物件就接收一個DragDrop事件。
如果來源控制項沒有放在該物件上,則當state的設定為1(離去)時,該物件就接收另一個DragOver事件。
附註使用DragMode屬性和Drag方法可指定拖曳起始的模式。
關於source參數的使用技巧,請參閱DragDrop事件描述主題部份。
回上頁DropDown事件該事件發生在ComboBox控制項的清單部份正要放下的時候;
如果ComboBox控制項的Style屬性設定為1(SimpleCombo)時,則此事件不會發生。
語法PrivateSubobject_DropDown([indexAsInteger])DropDown事件的語法具有以下幾個單元:
請注意DropDown事件程序可以在使用者選取之前,對ComboBox清單進行最後的各種更新。
這可以讓您用AddItem或RemoveItem方法從該清單新增或刪除項目。
在需要控制項間有相互作用時,這種靈活性是很有用的。
例如,要根據在OptionButton群組中的選擇,決定載入到ComboBox清單的內容時,就可以利用該事件。
回上頁Error事件僅在未執行VisualBasic程式碼,且產生資料存取的錯誤時,才發生此事件。
語法PrivateSubobject_Error([indexAsInteger,]dataerrAsInteger,responseAsInteger)Error事件的語法具有以下幾個單元:
單元描述
object物件運算式,指定「適用於」清單中的物件。
index控制項陣列,可用來識別控制項。
dataerr錯誤代碼
response對應您所希望回應的代碼,細節詳述於「設定」中。
設定Response的設定有:
常數值說明
vbDataErrContinue0繼續。
vbDataErrDisplay1(預設值)顯示錯誤訊息。
請注意這些常數會列示在「瀏覽物件」的VisualBasic(VB)物件程式庫中。
通常在執行階段中提供處理錯誤的功能。
然而,當有下列情形時,即使沒有程式碼正在執行,也會發生執行階段的錯誤:
使用者按下Data控制項按鈕。
Data控制項自動開啟資料庫,並且在Form_Load事件後載入Recordset物件。
自訂控制項執行一些諸如MoveNext方法、AddNew方法或Delete方法等動作。
若錯誤起因於上述動作時,則會產生Error事件。
如果未對Error事件編寫事件程序時,VisualBasic將顯示與該錯誤相關的資訊。
發生在Form_Load事件之前的錯誤是不可處理的,也不會引發Error事件。
舉例而言,在設計階段時如果將資料控制項的屬性設成指向一個不知名的資料庫表,就會發生不可處理的錯誤。
回上頁GotFocus事件發生在物件獲得駐點時;
可以透過使用者動作,如TAB切換,或按一下物件,或者在程式碼中用SetFocus方法來改變駐點。
而表單只有在所有可見的控制項都不能作用時,才會接收駐點。
語法PrivateSubForm_GotFocus()
PrivateSubobject_GotFocus([indexAsInteger])GotFocus事件語法具有以下幾個單元:
請注意通常,GotFocus事件程序用於指定,當控制項或表單首次接收駐點時發生的動作。
例如,透過給表單上每個控制項附加一個GotFocus事件程序,就可以顯示簡要描述或狀態列資訊,來對使用者提供指導。
根據獲取駐點的控制項不同,透過使其有效、禁止或者是顯示其它控制項的模式,也可以提供出可以看見的要訣。
附註一個控制項僅當其Enabled和Visible屬性都設定為True時,才能接收駐點。
在VisualBasic中要自訂鍵盤介面,以移動駐點,設定表單上控制項的定位順序或指定其對應鍵。
回上頁ItemCheck事件當ListBox控制項的Style屬性設定為1(核取方塊),且選定或清除ListBox控制項中某個項目的核取方塊時,就會發生此事件。
語法PrivateSubobject_ItemCheck([indexAsInteger])ItemCheck事件語法具有以下幾個單元:
object一個物件運算式,其值是「適用於」清單中的一個物件。
Index一個整數,用來識別清單方塊中的項目。
請注意附註在清單項目反白顯示時,ItemCheck事件並不會發生;
明白地說,只有在清單項目的核取方塊被選定或清除時才會發生。
您可用程式碼使ListBox的Selected陣列中的元素改變(其Style屬性設定為1),來引發ItemCheck事件。
ItemCheck事件會出現在Click事件之前。
回上頁KeyDown,KeyUp事件發生在一個物件具有駐點時,使用者按下(KeyDown)或放開(KeyUp)按鍵時。
(若要解譯ANSI字元,則應使用KeyPress事件。
)語法PrivateSubForm_KeyDown(keycodeAsInteger,shiftAsInteger)
PrivateSubobject_KeyDown([indexAsInteger,]keycodeAsInteger,shiftAsInteger)
PrivateSubForm_KeyUp(keycodeAsInteger,shiftAsInteger)
PrivateSubobject_KeyUp([indexAsInteger,]keycodeAsInteger,shiftAsInteger)KeyDown和KeyUp事件語法具有以下幾個單元:
keycode是一個按鍵碼,例如vbKeyF1(F1鍵)或vbKeyHome(HOME鍵)。
要指定按鍵碼,可使用瀏覽物件中VisualBasic(VB)物件程式庫中的常數。
shift在事件發生時回應SHIFT、CTRL和ALT鍵狀態的一個整數。
shift參數是一位元欄位,以最低的位元對應SHIFT鍵(位元0),CTRL鍵(位元1)和ALT鍵(位元2)。
這些位元分別對應於值1、2和4。
可以有一些、所有或沒有任何位元的設定來指明有一些、所有?
峔S有任何鍵被按下。
例如,如果CTRL和ALT這兩個鍵都被按住,則shift的值為6。
請注意對於這兩個事件來說,帶駐點的物件接收所有按鍵訊息。
表單只有在沒有可見的和可作用的控制項時才可以獲得駐點。
雖然KeyDown和KeyUp事件可適用於大多數按鍵,不過它們一般常用於:
延伸的字元鍵,如功能鍵等。
巡覽鍵。
組合鍵。
區別數字鍵台和一般的數字鍵。
當需要同時對按住和放開一個鍵回應時,就可使用KeyDown和KeyUp事件程序。
下列的情況請勿使用KeyDown和KeyUp事件:
表單有一個CommandButton控制項,且Default屬性設定為True時的ENTER鍵。
表單有一個CommandButton控制項,且Cancel屬性設定為True時的ESC鍵。
TAB鍵。
KeyDown和KeyUp用兩種參數來解譯每個字元的大寫和小寫:
keycode—顯示實際按鍵(將A和a作為同一個鍵回應),和shift—顯示shift+key鍵的狀態,且回應A或a其中之一。
如果要測試shift參數,可使用該參數中定義各位元的shift常數。
該常數有下列值:
vbShiftMask1SHIFT鍵的位元遮罩。
VbCtrlMask2CTRL鍵的位元遮罩。
VbAltMask4ALT鍵的位元遮罩。
該常數用作位元遮罩。
它可用來測試按鍵的任何組合。
測試一個條件時,首先應依每種結果指定一暫時的整數變數,然後將shift與一個位元遮罩進行比對。
如下例,可用And運算子和shift參數一起來測試是否大於0。
指示該修飾鍵是否被按下:
語法ShiftDown=(ShiftAndvbShiftMask)&
gt;
0可按此例在一個程序中測試任何條件的組合:
IfShiftDownAndCtrlDownThen附註如果KeyPreview屬性設為True,則表單會比其上的控制項先接收到此事件。
您可用KeyPreview屬性來建立全域(global)鍵盤處理常式。
回上頁KeyPress事件發生在使用者按下並放開一個ANSI鍵時。
語法PrivateSubForm_KeyPress(keyasciiAsInteger)
PrivateSubobject_KeyPress([indexAsInteger,]keyasciiAsInteger)KeyPress事件的語法具有以下幾個單元:
keyascii一個整數,會傳回一個標準數字ANSI碼,Keyascii係藉由傳址方式傳遞,若改變之可傳送一個不同的字元給物件。
將keyascii改變為0時可取消按鍵訊息,這樣一來物件便接收不到字元。
請注意具有駐點的物件可接收該事件。
表單僅