




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)VB程序事件事件(Event): 事件是指由系統(tǒng)事先設(shè)定的、能被對(duì)象識(shí)別和響應(yīng)的動(dòng)作。 事件是指對(duì)象對(duì)于外部動(dòng)作的響應(yīng),當(dāng)對(duì)象發(fā)生了某個(gè)事件,就會(huì)執(zhí)行與此對(duì)象的這個(gè)事件相應(yīng)的代碼,這段代碼被稱(chēng)為“事件過(guò)程”。事件過(guò)程的命名格式為:PrivateSub控件名_事件名() 例如:我們?cè)诖绑w上按了一下鼠標(biāo)左鍵,這樣就發(fā)生了一個(gè)窗體的“Click”(即單擊)事件,并執(zhí)行與其對(duì)應(yīng)的事件過(guò)程。這個(gè)的事件過(guò)程名稱(chēng)為:Form1_Click 我們可以為事件過(guò)程編寫(xiě)代碼,使得當(dāng)某個(gè)對(duì)象發(fā)生了某個(gè)事件時(shí)可以執(zhí)行我們需要的一些操作。 事件即控件對(duì)外部條件的反應(yīng),不同的控件具有不同的事件。如:對(duì)于命令按鈕,通常
2、情況下我們都是單擊它,所以最常使用的是單擊事件,對(duì)于驅(qū)動(dòng)器列表框控件,通常我們使用的是它的改變事件。但我們使用控件的相應(yīng)事件時(shí),我們必須對(duì)其相應(yīng)的事件進(jìn)行編寫(xiě)代碼,否則控件什么事情也不會(huì)做。 事件處理器 確定控件如何響應(yīng)事件的事件過(guò)程可以稱(chēng)之為“事件處理器”。 要為某一控件的特定事件編寫(xiě)程序,可以通過(guò)雙擊控件切換到代碼窗口再選擇相應(yīng)的事件來(lái)完成,也可以通過(guò)“視圖”菜單中的“代碼窗口”命令切換到代碼編輯窗口來(lái)完成。 我們看到兩個(gè)下拉列表框,第一個(gè)下拉列表框里包含了窗體中所有的控件,包括窗體本身;第二個(gè)下拉列表框中包含了選中控件的所有事件。在此狀態(tài)下,要對(duì)某個(gè)控件進(jìn)行編程,需要先在左邊的下拉列表框
3、中選中要編程的控件,然后再右邊的下拉列表框中選擇要編程的事件。例如我們要對(duì)“Commandl”控件的“KeyDown事件進(jìn)行編程。 控件名稱(chēng)和相應(yīng)事件的名稱(chēng)共同構(gòu)成了事件處理器的名稱(chēng),如上圖中所示的“FormLoad()”表示對(duì)象是“Form窗體,“Load表示窗體的加載事件,即窗體啟動(dòng)時(shí)發(fā)生的事件,對(duì)此事件進(jìn)行編程可以確定窗體啟動(dòng)時(shí)所做的事情。 常用的事件有兩種,即鼠標(biāo)事件和鍵盤(pán)事件。 鼠標(biāo)事件 鼠標(biāo)事件是VisualBasic編程中最常用到的事件,多數(shù)控件都支持鼠標(biāo)操作,因此對(duì)鼠標(biāo)事件進(jìn)行編程是非常重要的。 鼠標(biāo)事件主要有以下幾種: Click:?jiǎn)螕羰录?,即單擊鼠?biāo)時(shí)發(fā)生的事件。 DblC
4、lick:雙擊事件,即雙擊鼠標(biāo)時(shí)發(fā)生的事件。 MouseDown:鼠標(biāo)按下時(shí)發(fā)生的事件。 MouseUp:鼠標(biāo)抬起時(shí)發(fā)生的事件。 MouseMove:鼠標(biāo)移動(dòng)時(shí)發(fā)生的事件,對(duì)某控件的此事件進(jìn)行編程,則當(dāng)鼠標(biāo)移過(guò)此控件時(shí)就會(huì)觸發(fā)此事件,執(zhí)行其相應(yīng)代碼。 鼠標(biāo)事件的發(fā)生順序是: (1)首先發(fā)生的是MouseMove事件,當(dāng)鼠標(biāo)移動(dòng)時(shí),將會(huì)連續(xù)觸發(fā)MoouseMove事件。 (2)當(dāng)鼠標(biāo)按下時(shí)發(fā)生MouseDown事件。 (3)鼠標(biāo)松開(kāi)時(shí)發(fā)生MouseUp事件。 (4)如果按住的是鼠標(biāo)左鍵,則Click事件在MouseUp之后發(fā)生。 雙擊鼠標(biāo)時(shí)事件發(fā)生順序是: (1)當(dāng)鼠標(biāo)按下時(shí)發(fā)生MouseDow
5、n事件。 (2)鼠標(biāo)松開(kāi)時(shí)發(fā)生MouseUp事件。 (3)單擊鼠標(biāo)發(fā)生Click事件。 (4)雙擊鼠標(biāo)發(fā)生DblClick事件。 (5)完成鼠標(biāo)雙擊時(shí)發(fā)生MouseUp事件。 在上面所列出的這些事件中,最常用到的就是Click事件和DblClcik事件,MouseMove和douseUp事件不太經(jīng)常用,一般用在需要對(duì)鼠標(biāo)進(jìn)行處理的地方。如:對(duì)于最常見(jiàn)的命令按鈕,通常情況下我們使用Click事件;而在進(jìn)行畫(huà)圖的時(shí)候,例如畫(huà)一條直線,必須先按住鼠標(biāo)左鍵,然后拖動(dòng)鼠標(biāo),再松開(kāi)鼠標(biāo)。在此過(guò)程中,首先觸發(fā)MouseDown事件,我們可以在此事件中記錄鼠標(biāo)的開(kāi)始位置,再對(duì)MouseUp事件進(jìn)行編程,以記錄
6、鼠標(biāo)的結(jié)束位置;其中還要對(duì)MouseMoove事件進(jìn)行編程,以在移動(dòng)過(guò)程中進(jìn)行處理畫(huà)圖操作,而不是Click或DblClick事件。 鼠標(biāo)的單擊事件定義如下: SubClick() EndSub 雙擊事件定義如下: SubDblClick() EndSub 對(duì)于MouseDown和MouseUp事件,它們的定義要復(fù)雜的多。對(duì)于MouseUp事件,其定義如下: PrivateSubLabell_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) EndS 在上面的參數(shù)中,ButtonAsInteger定義了參數(shù)Button,該參
7、數(shù)是用于確定按下的是鼠標(biāo)的左鍵,右鍵,還是中鍵,其取值如下表所示。 常量數(shù)值說(shuō)明 VbleftButton1按下鼠標(biāo)左鍵 VbRightButton2按下鼠標(biāo)右鍵 VbMiddleButton4按下鼠標(biāo)中鍵 ShiftAsInteger定義整型參數(shù)Shift,該參數(shù)用于確定鍵盤(pán)上Shift鍵、Ctrl鍵、Alt鍵是否被按下,其取值如下表所示。 常量 數(shù)值 說(shuō)明 VbShiftMask 1 按下Shift鍵 VbCtrlMask 2 按下Ctrl鍵 VbAltMask 4 按下Alt鍵 要判斷是哪個(gè)鍵被按下了,要由相應(yīng)的程序代碼來(lái)完成。如: PrivateSubLabellMouseUp(But
8、tonASInteger,ShiftAsInteger,XaSSing,YasSingle) IfButton=VbRightButtonThen Msgbox(“你按下去的是鼠標(biāo)右鍵”) EndIf EndSub 此段代碼在鼠標(biāo)抬起時(shí)執(zhí)行,程序中用If條件判斷語(yǔ)句來(lái)判斷究竟是哪個(gè)鍵被按 當(dāng)Button=VbRightButton成立時(shí),即鼠標(biāo)右鍵被按下,這時(shí)可以執(zhí)行相應(yīng)的操作。 PrivateSubLabellMouseUp(ButtonAsInteger,ShiftAsInteger,XasSin2Single) IfShift=2Then Msgbox(“單擊鼠標(biāo)時(shí)Ctrl鍵被按下”)
9、EndIf EndSub 這段代碼在執(zhí)行過(guò)程中判斷當(dāng)鼠標(biāo)抬起時(shí)鍵盤(pán)上哪個(gè)鍵被按了下去。如上表說(shuō)明,當(dāng)Shift值為2時(shí),表示Ctrl鍵被按了下去。 由上面的例子可以看出我們可以對(duì)鼠標(biāo)進(jìn)行一些判斷,然后執(zhí)行一些特殊操作,但用起來(lái)通常比較麻煩。 鍵盤(pán)事件 鼠標(biāo)事件是由鼠標(biāo)鍵的單擊、雙擊、移動(dòng)等操作時(shí)發(fā)生,鍵盤(pán)事件則是在鍵盤(pán)的某個(gè)鍵按下去時(shí)觸發(fā)。除了鼠標(biāo)事件外,通常需要對(duì)鍵盤(pán)事件進(jìn)行編程。鍵盤(pán)事件主要有以下幾種: (1)KeyDown:當(dāng)鍵盤(pán)上某鍵被按下去時(shí)發(fā)生。 (2)KeyUp:鍵盤(pán)上的鍵抬起來(lái)時(shí)發(fā)生。 (3)KeyPree:此事件發(fā)生在鍵盤(pán)被按下后和字符被顯示出來(lái)之前發(fā)生。 對(duì)于鍵盤(pán)事件,相對(duì)
10、來(lái)說(shuō)KeyDown事件和KeyUp事件使用比較少,通常情況下對(duì)KeyPress事件編程較多,因?yàn)榇耸录⒅劓I盤(pán)被按下的是哪個(gè)鍵 KeyPress事件定義如下: PrivateSubTextl_KeyPress(KeyAsciiAsInteger) EndSub 其中,參數(shù)KeyAscii被定義為整型變量,表示被按下去鍵的Ascii碼,我們可以通過(guò)對(duì)變量KeyAscii值的判斷來(lái)執(zhí)行一些特殊操作。例如要想實(shí)現(xiàn)在文本框中只能輸人數(shù)字,不接受其它字符,可以編寫(xiě)如下代碼: PrivateSubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii48OrKeyAsci
11、i57Then KeyAscii=O EndIf EndSub 此段代碼表示:如果被按下去的鍵的Ascii碼值不在48到57之間(即輸入不是數(shù)字),則將KeyAssii值設(shè)置為零。從而不進(jìn)行操作,文本框中并不存在輸入的字符。 (4)Change:Change事件在控件的內(nèi)容發(fā)生改變時(shí)執(zhí)行。如:當(dāng)我們要做一個(gè)類(lèi)似記事本程序的時(shí)候,用文本框控件作為內(nèi)容編輯區(qū),當(dāng)文本框內(nèi)容改變而并未保存時(shí),用戶(hù)卻在此時(shí)退出程序,我們希望程序能夠給出提示。可以通過(guò)定義一個(gè)整型變量“IsChang,當(dāng)其值為0時(shí)表示未存盤(pán),其值為1時(shí)表示存盤(pán)了,在文本框控件的change事件中輸入如下代碼: “IsChange=0。在程
12、序退出事件中對(duì)IsChange值進(jìn)行判斷,當(dāng)值為0時(shí)就給予提示,否則退出程序。程序代碼如下: PrivateSubTextl_Change() IsChange=0 EndSub PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger) IflsChange=0Then MsgBox(還未存盤(pán),是否存盤(pán)),VbOkCancle,提示! EndIf EndSub 此段代碼用于程序退出時(shí)的判斷,F(xiàn)orm_QueryUnload事件表示程序退出時(shí)所執(zhí)行的事件。 這里主要介紹了事件處理器,常見(jiàn)的屬性與各種事件,在Windows應(yīng)用程
13、序中,我們經(jīng)常要用到上面所介紹的屬性與事件。 焦點(diǎn) 在開(kāi)發(fā)Windows程序時(shí),有一個(gè)很重要的概念焦點(diǎn)。所謂焦點(diǎn),就是控件能夠接受鍵盤(pán)輸入的當(dāng)前狀態(tài)。只有具有焦點(diǎn)的控件,才能接受用戶(hù)的鍵盤(pán)輸入;換一種說(shuō)法也可以這樣說(shuō),當(dāng)前狀態(tài)下用戶(hù)所有的鍵盤(pán)輸入只能被具有焦點(diǎn)的控件所獲得。需要注意的是,焦點(diǎn)只是在程序運(yùn)行時(shí)才有的概念,也就是說(shuō)在設(shè)計(jì)程序時(shí),不能說(shuō)某個(gè)控件具有焦點(diǎn)或不具有焦點(diǎn)。 焦點(diǎn)是對(duì)象接受用戶(hù)鼠標(biāo)操作或鍵盤(pán)操作的能力。當(dāng)對(duì)象具有焦點(diǎn)時(shí),才可以接受用戶(hù)的操作。例如,在有就幾個(gè)文本框的窗體中,只有具有焦點(diǎn)的文本框才能接受用戶(hù)的輸入。 要使用某個(gè)控件獲得焦點(diǎn),可以有如下三種方法: (1)、使用鍵盤(pán)
14、上的“Tab”鍵,將焦點(diǎn)移到相應(yīng)的控件上。 (2)、使用鼠標(biāo)直接在相應(yīng)的控件上單擊就可以了。 (3)、在程序代碼中使用該控件的“SetFocus”方法。 對(duì)于絕大多數(shù)的控件,都具有“TabStop”屬性和“Tablndex”屬性。 其中,“TabStop”屬性是用來(lái)設(shè)置是否允許用戶(hù)使用“Tab”鍵將焦點(diǎn)移到該控件上,默認(rèn)情況下是允許的。“TabStop”屬性有兩個(gè)取值:“True”和“False”,若其值為“True”時(shí),允許使用“Tab”鍵將焦點(diǎn)移到該控件;否則,就不允許。但要注意,不管“TabStop屬性的取值為“True”還是為“False”,使用鼠標(biāo)都可以將焦點(diǎn)轉(zhuǎn)移到該控件。 “Iab
15、lndex”屬性則是用來(lái)設(shè)置該控件的跳表順序的。前面已經(jīng)說(shuō)過(guò),使用“Tab”鍵可以將焦點(diǎn)從一個(gè)控件上轉(zhuǎn)移到另一個(gè)控件上,在這個(gè)過(guò)程中就有一個(gè)跳表順序的問(wèn)題。也就是說(shuō),當(dāng)用戶(hù)第一次按下“Tab”鍵時(shí),焦點(diǎn)將會(huì)移到哪一個(gè)控件上;第二次按下“Tab”鍵時(shí),焦點(diǎn)又會(huì)移到哪一個(gè)控件上等,這個(gè)順序就是跳表順序。 在設(shè)計(jì)窗體時(shí),跳表順序是根據(jù)控件放人窗體的先后順序來(lái)決定的。即第一個(gè)放人窗體的控件將最早獲得焦點(diǎn),以后每按一次“Tab”鍵,焦點(diǎn)就會(huì)轉(zhuǎn)移到下一個(gè)放人窗體中的控件上。 在很多情況下,某些控件不需要使用“Tab”鍵將焦點(diǎn)移到該控件上或是不能根據(jù)控件放人窗體的先后順序來(lái)決定跳表順序,這時(shí)就需要設(shè)置“Ta
16、bStop”屬性和“Tablndex屬性了。“Tablndex”屬性的取值是一個(gè)整數(shù),從0開(kāi)始依次類(lèi)推,該屬性的值小的將先獲取焦點(diǎn)。 另外,還有兩個(gè)與焦點(diǎn)相關(guān)的事件:“GotFocus”事件和“LostFocus”事件。當(dāng)焦點(diǎn)從一個(gè)控件轉(zhuǎn)移到另一個(gè)控件上時(shí),前者即曾經(jīng)擁有焦點(diǎn)的控件,將會(huì)發(fā)生“LostFocus”事件而后者即將會(huì)擁有焦點(diǎn)的控件,則會(huì)發(fā)生“GotFocus”事件。 以下是VB中的常見(jiàn)事件: change對(duì)于滾動(dòng)條來(lái)說(shuō),滑塊位置改變;對(duì)于textbox來(lái)說(shuō),內(nèi)容改變 click對(duì)象單擊 dblclick對(duì)象雙擊 dragdrop鼠標(biāo)拖動(dòng) dragover鼠標(biāo)拖過(guò) dropdown鼠標(biāo)鍵松開(kāi) error錯(cuò)誤處理 gotfocus獲取焦點(diǎn) itemcheck keydown鍵盤(pán)按下 keyup鍵盤(pán)抬起 keypress鍵盤(pán)按鍵 linkclose網(wǎng)絡(luò)連接關(guān)閉 linkerror網(wǎng)絡(luò)連接錯(cuò)誤 linknotify linkopen oledragover olegivefeedback olest
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全國(guó)交安三類(lèi)人員考試試題及答案
- 【安慶】2025年安慶宿松縣部分事業(yè)單位公開(kāi)招聘工作人員67人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 【興義(黔西南)】2025年貴州黔西南州赴省內(nèi)外高校引才暨第十三屆貴州人才博覽會(huì)引進(jìn)人才484人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2025福建泉州發(fā)展集團(tuán)有限公司(第一批)人才引進(jìn)招聘25人筆試參考題庫(kù)附帶答案詳解
- 2025內(nèi)蒙古鑫和資源投資集團(tuán)有限責(zé)任公司招聘26名筆試參考題庫(kù)附帶答案詳解
- 安全員上崗證b考試試題及答案
- 2017安徽中考物理試題及答案
- 創(chuàng)新型企業(yè)廠房購(gòu)置合同
- 采礦權(quán)抵押融資合同示范文本
- 智能化采購(gòu)計(jì)劃編制及目標(biāo)優(yōu)化合同
- 從偏差行為到卓越一生3.0版
- 2024年廣州天河區(qū)六年級(jí)語(yǔ)文小升初摸底考試含答案
- 人工智能中的因果驅(qū)動(dòng)智慧樹(shù)知到期末考試答案2024年
- 因公臨時(shí)出國(guó)經(jīng)費(fèi)決算表
- 2024年合肥市公安局警務(wù)輔助人員招聘筆試參考題庫(kù)附帶答案詳解
- 2022年病區(qū)分層考核試題N2
- 自動(dòng)化設(shè)備的故障診斷與維護(hù)
- 《無(wú)菌技術(shù)培訓(xùn)課程》課件
- JJF 1521-2023燃油加油機(jī)型式評(píng)價(jià)大綱(試行)
- 接觸網(wǎng)設(shè)備結(jié)構(gòu)-接觸網(wǎng)吊弦
- 十個(gè)一活動(dòng)內(nèi)容記錄表
評(píng)論
0/150
提交評(píng)論