




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)VB程序事件事件(Event): 事件是指由系統(tǒng)事先設(shè)定的、能被對象識別和響應(yīng)的動作。 事件是指對象對于外部動作的響應(yīng),當(dāng)對象發(fā)生了某個事件,就會執(zhí)行與此對象的這個事件相應(yīng)的代碼,這段代碼被稱為“事件過程”。事件過程的命名格式為:PrivateSub控件名_事件名() 例如:我們在窗體上按了一下鼠標(biāo)左鍵,這樣就發(fā)生了一個窗體的“Click”(即單擊)事件,并執(zhí)行與其對應(yīng)的事件過程。這個的事件過程名稱為:Form1_Click 我們可以為事件過程編寫代碼,使得當(dāng)某個對象發(fā)生了某個事件時可以執(zhí)行我們需要的一些操作。 事件即控件對外部條件的反應(yīng),不同的控件具有不同的事件。如:對于命令按鈕,通常
2、情況下我們都是單擊它,所以最常使用的是單擊事件,對于驅(qū)動器列表框控件,通常我們使用的是它的改變事件。但我們使用控件的相應(yīng)事件時,我們必須對其相應(yīng)的事件進(jìn)行編寫代碼,否則控件什么事情也不會做。 事件處理器 確定控件如何響應(yīng)事件的事件過程可以稱之為“事件處理器”。 要為某一控件的特定事件編寫程序,可以通過雙擊控件切換到代碼窗口再選擇相應(yīng)的事件來完成,也可以通過“視圖”菜單中的“代碼窗口”命令切換到代碼編輯窗口來完成。 我們看到兩個下拉列表框,第一個下拉列表框里包含了窗體中所有的控件,包括窗體本身;第二個下拉列表框中包含了選中控件的所有事件。在此狀態(tài)下,要對某個控件進(jìn)行編程,需要先在左邊的下拉列表框
3、中選中要編程的控件,然后再右邊的下拉列表框中選擇要編程的事件。例如我們要對“Commandl”控件的“KeyDown事件進(jìn)行編程。 控件名稱和相應(yīng)事件的名稱共同構(gòu)成了事件處理器的名稱,如上圖中所示的“FormLoad()”表示對象是“Form窗體,“Load表示窗體的加載事件,即窗體啟動時發(fā)生的事件,對此事件進(jìn)行編程可以確定窗體啟動時所做的事情。 常用的事件有兩種,即鼠標(biāo)事件和鍵盤事件。 鼠標(biāo)事件 鼠標(biāo)事件是VisualBasic編程中最常用到的事件,多數(shù)控件都支持鼠標(biāo)操作,因此對鼠標(biāo)事件進(jìn)行編程是非常重要的。 鼠標(biāo)事件主要有以下幾種: Click:單擊事件,即單擊鼠標(biāo)時發(fā)生的事件。 DblC
4、lick:雙擊事件,即雙擊鼠標(biāo)時發(fā)生的事件。 MouseDown:鼠標(biāo)按下時發(fā)生的事件。 MouseUp:鼠標(biāo)抬起時發(fā)生的事件。 MouseMove:鼠標(biāo)移動時發(fā)生的事件,對某控件的此事件進(jìn)行編程,則當(dāng)鼠標(biāo)移過此控件時就會觸發(fā)此事件,執(zhí)行其相應(yīng)代碼。 鼠標(biāo)事件的發(fā)生順序是: (1)首先發(fā)生的是MouseMove事件,當(dāng)鼠標(biāo)移動時,將會連續(xù)觸發(fā)MoouseMove事件。 (2)當(dāng)鼠標(biāo)按下時發(fā)生MouseDown事件。 (3)鼠標(biāo)松開時發(fā)生MouseUp事件。 (4)如果按住的是鼠標(biāo)左鍵,則Click事件在MouseUp之后發(fā)生。 雙擊鼠標(biāo)時事件發(fā)生順序是: (1)當(dāng)鼠標(biāo)按下時發(fā)生MouseDow
5、n事件。 (2)鼠標(biāo)松開時發(fā)生MouseUp事件。 (3)單擊鼠標(biāo)發(fā)生Click事件。 (4)雙擊鼠標(biāo)發(fā)生DblClick事件。 (5)完成鼠標(biāo)雙擊時發(fā)生MouseUp事件。 在上面所列出的這些事件中,最常用到的就是Click事件和DblClcik事件,MouseMove和douseUp事件不太經(jīng)常用,一般用在需要對鼠標(biāo)進(jìn)行處理的地方。如:對于最常見的命令按鈕,通常情況下我們使用Click事件;而在進(jìn)行畫圖的時候,例如畫一條直線,必須先按住鼠標(biāo)左鍵,然后拖動鼠標(biāo),再松開鼠標(biāo)。在此過程中,首先觸發(fā)MouseDown事件,我們可以在此事件中記錄鼠標(biāo)的開始位置,再對MouseUp事件進(jìn)行編程,以記錄
6、鼠標(biāo)的結(jié)束位置;其中還要對MouseMoove事件進(jìn)行編程,以在移動過程中進(jìn)行處理畫圖操作,而不是Click或DblClick事件。 鼠標(biāo)的單擊事件定義如下: SubClick() EndSub 雙擊事件定義如下: SubDblClick() EndSub 對于MouseDown和MouseUp事件,它們的定義要復(fù)雜的多。對于MouseUp事件,其定義如下: PrivateSubLabell_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) EndS 在上面的參數(shù)中,ButtonAsInteger定義了參數(shù)Button,該參
7、數(shù)是用于確定按下的是鼠標(biāo)的左鍵,右鍵,還是中鍵,其取值如下表所示。 常量數(shù)值說明 VbleftButton1按下鼠標(biāo)左鍵 VbRightButton2按下鼠標(biāo)右鍵 VbMiddleButton4按下鼠標(biāo)中鍵 ShiftAsInteger定義整型參數(shù)Shift,該參數(shù)用于確定鍵盤上Shift鍵、Ctrl鍵、Alt鍵是否被按下,其取值如下表所示。 常量 數(shù)值 說明 VbShiftMask 1 按下Shift鍵 VbCtrlMask 2 按下Ctrl鍵 VbAltMask 4 按下Alt鍵 要判斷是哪個鍵被按下了,要由相應(yīng)的程序代碼來完成。如: PrivateSubLabellMouseUp(But
8、tonASInteger,ShiftAsInteger,XaSSing,YasSingle) IfButton=VbRightButtonThen Msgbox(“你按下去的是鼠標(biāo)右鍵”) EndIf EndSub 此段代碼在鼠標(biāo)抬起時執(zhí)行,程序中用If條件判斷語句來判斷究竟是哪個鍵被按 當(dāng)Button=VbRightButton成立時,即鼠標(biāo)右鍵被按下,這時可以執(zhí)行相應(yīng)的操作。 PrivateSubLabellMouseUp(ButtonAsInteger,ShiftAsInteger,XasSin2Single) IfShift=2Then Msgbox(“單擊鼠標(biāo)時Ctrl鍵被按下”)
9、EndIf EndSub 這段代碼在執(zhí)行過程中判斷當(dāng)鼠標(biāo)抬起時鍵盤上哪個鍵被按了下去。如上表說明,當(dāng)Shift值為2時,表示Ctrl鍵被按了下去。 由上面的例子可以看出我們可以對鼠標(biāo)進(jìn)行一些判斷,然后執(zhí)行一些特殊操作,但用起來通常比較麻煩。 鍵盤事件 鼠標(biāo)事件是由鼠標(biāo)鍵的單擊、雙擊、移動等操作時發(fā)生,鍵盤事件則是在鍵盤的某個鍵按下去時觸發(fā)。除了鼠標(biāo)事件外,通常需要對鍵盤事件進(jìn)行編程。鍵盤事件主要有以下幾種: (1)KeyDown:當(dāng)鍵盤上某鍵被按下去時發(fā)生。 (2)KeyUp:鍵盤上的鍵抬起來時發(fā)生。 (3)KeyPree:此事件發(fā)生在鍵盤被按下后和字符被顯示出來之前發(fā)生。 對于鍵盤事件,相對
10、來說KeyDown事件和KeyUp事件使用比較少,通常情況下對KeyPress事件編程較多,因?yàn)榇耸录⒅劓I盤被按下的是哪個鍵 KeyPress事件定義如下: PrivateSubTextl_KeyPress(KeyAsciiAsInteger) EndSub 其中,參數(shù)KeyAscii被定義為整型變量,表示被按下去鍵的Ascii碼,我們可以通過對變量KeyAscii值的判斷來執(zhí)行一些特殊操作。例如要想實(shí)現(xiàn)在文本框中只能輸人數(shù)字,不接受其它字符,可以編寫如下代碼: PrivateSubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii48OrKeyAsci
11、i57Then KeyAscii=O EndIf EndSub 此段代碼表示:如果被按下去的鍵的Ascii碼值不在48到57之間(即輸入不是數(shù)字),則將KeyAssii值設(shè)置為零。從而不進(jìn)行操作,文本框中并不存在輸入的字符。 (4)Change:Change事件在控件的內(nèi)容發(fā)生改變時執(zhí)行。如:當(dāng)我們要做一個類似記事本程序的時候,用文本框控件作為內(nèi)容編輯區(qū),當(dāng)文本框內(nèi)容改變而并未保存時,用戶卻在此時退出程序,我們希望程序能夠給出提示??梢酝ㄟ^定義一個整型變量“IsChang,當(dāng)其值為0時表示未存盤,其值為1時表示存盤了,在文本框控件的change事件中輸入如下代碼: “IsChange=0。在程
12、序退出事件中對IsChange值進(jìn)行判斷,當(dāng)值為0時就給予提示,否則退出程序。程序代碼如下: PrivateSubTextl_Change() IsChange=0 EndSub PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger) IflsChange=0Then MsgBox(還未存盤,是否存盤),VbOkCancle,提示! EndIf EndSub 此段代碼用于程序退出時的判斷,F(xiàn)orm_QueryUnload事件表示程序退出時所執(zhí)行的事件。 這里主要介紹了事件處理器,常見的屬性與各種事件,在Windows應(yīng)用程
13、序中,我們經(jīng)常要用到上面所介紹的屬性與事件。 焦點(diǎn) 在開發(fā)Windows程序時,有一個很重要的概念焦點(diǎn)。所謂焦點(diǎn),就是控件能夠接受鍵盤輸入的當(dāng)前狀態(tài)。只有具有焦點(diǎn)的控件,才能接受用戶的鍵盤輸入;換一種說法也可以這樣說,當(dāng)前狀態(tài)下用戶所有的鍵盤輸入只能被具有焦點(diǎn)的控件所獲得。需要注意的是,焦點(diǎn)只是在程序運(yùn)行時才有的概念,也就是說在設(shè)計程序時,不能說某個控件具有焦點(diǎn)或不具有焦點(diǎn)。 焦點(diǎn)是對象接受用戶鼠標(biāo)操作或鍵盤操作的能力。當(dāng)對象具有焦點(diǎn)時,才可以接受用戶的操作。例如,在有就幾個文本框的窗體中,只有具有焦點(diǎn)的文本框才能接受用戶的輸入。 要使用某個控件獲得焦點(diǎn),可以有如下三種方法: (1)、使用鍵盤
14、上的“Tab”鍵,將焦點(diǎn)移到相應(yīng)的控件上。 (2)、使用鼠標(biāo)直接在相應(yīng)的控件上單擊就可以了。 (3)、在程序代碼中使用該控件的“SetFocus”方法。 對于絕大多數(shù)的控件,都具有“TabStop”屬性和“Tablndex”屬性。 其中,“TabStop”屬性是用來設(shè)置是否允許用戶使用“Tab”鍵將焦點(diǎn)移到該控件上,默認(rèn)情況下是允許的?!癟abStop”屬性有兩個取值:“True”和“False”,若其值為“True”時,允許使用“Tab”鍵將焦點(diǎn)移到該控件;否則,就不允許。但要注意,不管“TabStop屬性的取值為“True”還是為“False”,使用鼠標(biāo)都可以將焦點(diǎn)轉(zhuǎn)移到該控件。 “Iab
15、lndex”屬性則是用來設(shè)置該控件的跳表順序的。前面已經(jīng)說過,使用“Tab”鍵可以將焦點(diǎn)從一個控件上轉(zhuǎn)移到另一個控件上,在這個過程中就有一個跳表順序的問題。也就是說,當(dāng)用戶第一次按下“Tab”鍵時,焦點(diǎn)將會移到哪一個控件上;第二次按下“Tab”鍵時,焦點(diǎn)又會移到哪一個控件上等,這個順序就是跳表順序。 在設(shè)計窗體時,跳表順序是根據(jù)控件放人窗體的先后順序來決定的。即第一個放人窗體的控件將最早獲得焦點(diǎn),以后每按一次“Tab”鍵,焦點(diǎn)就會轉(zhuǎn)移到下一個放人窗體中的控件上。 在很多情況下,某些控件不需要使用“Tab”鍵將焦點(diǎn)移到該控件上或是不能根據(jù)控件放人窗體的先后順序來決定跳表順序,這時就需要設(shè)置“Ta
16、bStop”屬性和“Tablndex屬性了。“Tablndex”屬性的取值是一個整數(shù),從0開始依次類推,該屬性的值小的將先獲取焦點(diǎn)。 另外,還有兩個與焦點(diǎn)相關(guān)的事件:“GotFocus”事件和“LostFocus”事件。當(dāng)焦點(diǎn)從一個控件轉(zhuǎn)移到另一個控件上時,前者即曾經(jīng)擁有焦點(diǎn)的控件,將會發(fā)生“LostFocus”事件而后者即將會擁有焦點(diǎn)的控件,則會發(fā)生“GotFocus”事件。 以下是VB中的常見事件: change對于滾動條來說,滑塊位置改變;對于textbox來說,內(nèi)容改變 click對象單擊 dblclick對象雙擊 dragdrop鼠標(biāo)拖動 dragover鼠標(biāo)拖過 dropdown鼠標(biāo)鍵松開 error錯誤處理 gotfocus獲取焦點(diǎn) itemcheck keydown鍵盤按下 keyup鍵盤抬起 keypress鍵盤按鍵 linkclose網(wǎng)絡(luò)連接關(guān)閉 linkerror網(wǎng)絡(luò)連接錯誤 linknotify linkopen oledragover olegivefeedback olest
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)詢會主持流程
- 工程地質(zhì)培訓(xùn)
- 新媒體培訓(xùn)課件
- 腫瘤危重癥高血鈣癥護(hù)理
- VTE護(hù)理教學(xué)查房
- 罪犯教育適應(yīng)區(qū)
- 如何提高團(tuán)隊(duì)凝聚力
- 與心靈相約 與健康同行-心理健康主題演講稿
- 我國農(nóng)業(yè)機(jī)械化智能化產(chǎn)業(yè)現(xiàn)狀與區(qū)域發(fā)展差異分析報告
- 2025年海上風(fēng)力發(fā)電場運(yùn)維管理與技術(shù)創(chuàng)新策略深度報告
- 汽車維修行業(yè)的法規(guī)和政策
- 科學(xué)種植活動促進(jìn)小學(xué)生實(shí)踐能力提升的探究
- 變電站-配電房掛軌巡檢機(jī)器人技術(shù)方案
- 【高校環(huán)藝】室內(nèi)外手繪效果圖表現(xiàn)教案
- DB50-T 548.4-2024城市道路交通管理設(shè)施設(shè)置規(guī)范第4部分:道路交通安全設(shè)施
- 項(xiàng)目股份買斷合同范本
- 青島版數(shù)學(xué)八年級下冊-《平方根》教學(xué)課件
- 校園文印店經(jīng)營方案
- 2024屆重慶市沙坪壩區(qū)英語八年級第二學(xué)期期末監(jiān)測試題含答案
- 2023北京西城區(qū)高二下學(xué)期期末英語試題及答案
- 實(shí)現(xiàn)馬克思主義中國化時代化新的飛躍
評論
0/150
提交評論