第6章鍵盤和鼠標(biāo)事件_第1頁
第6章鍵盤和鼠標(biāo)事件_第2頁
第6章鍵盤和鼠標(biāo)事件_第3頁
第6章鍵盤和鼠標(biāo)事件_第4頁
第6章鍵盤和鼠標(biāo)事件_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 1.理解鼠標(biāo)、鍵盤事件的觸發(fā)機(jī)制。2.掌握鼠標(biāo)的MouseDown, MouseMove, MouseUp事件中各參數(shù)的含義及編程控制。3. 掌握鍵盤的KeyDown, KeyPress, KeyUp 事件中各參數(shù)的含義及編程控制。4.了解事件驅(qū)動(dòng)的拖放和 OLE 的拖放。本章要求:本章要求:第第6 6章章 鍵盤與鼠標(biāo)事件過程鍵盤與鼠標(biāo)事件過程本章重點(diǎn):本章重點(diǎn):本章難點(diǎn):本章難點(diǎn):理解鼠標(biāo)、鍵盤事件的觸發(fā)機(jī)制運(yùn)用理解鼠標(biāo)、鍵盤事件的觸發(fā)機(jī)制運(yùn)用事件驅(qū)動(dòng)的拖放和事件驅(qū)動(dòng)的拖放和 OLE 的拖放的拖放Visual Basi

2、cVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 在在Visual BasicVisual Basic中,提供中,提供KeyPressKeyPress、KeyDownKeyDown、KeyUpKeyUp三三種鍵盤事件,窗體和接受鍵盤輸入的控件都識(shí)別這三種事件。種鍵盤事件,窗體和接受鍵盤輸入的控件都識(shí)別這三種事件。 KeyPress KeyPress 按下對(duì)應(yīng)某按下對(duì)應(yīng)某ASCII ASCII 字符的鍵。字符的鍵。 KeyDownKeyDown 按下鍵盤的任意鍵。按下鍵盤的任意鍵。 KeyUpKeyUp 釋放鍵盤的任意鍵只有獲得焦點(diǎn)的對(duì)象才能釋放鍵盤的任意鍵只有獲得焦點(diǎn)的對(duì)象才能夠接受鍵盤事件

3、。夠接受鍵盤事件。 6.1.1 KeyPress 事件事件在按下與在按下與ASCII字符對(duì)應(yīng)的鍵時(shí)將觸發(fā)字符對(duì)應(yīng)的鍵時(shí)將觸發(fā)KeyPress 事件。事件。 6.1 鍵盤事件鍵盤事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 KeyPress 事件過程的語法格式是:事件過程的語法格式是:其中:其中: 例如,如果希望將文本框中的所有字符都強(qiáng)制轉(zhuǎn)換為大寫例如,如果希望將文本框中的所有字符都強(qiáng)制轉(zhuǎn)換為大寫字符,則可在輸入時(shí)使用此事件轉(zhuǎn)換大小寫:字符,則可在輸入時(shí)使用此事件轉(zhuǎn)換大小寫:Private Sub Text1_KeyPress (KeyAscii As Integ

4、er) KeyAscii = Asc(Ucase(Chr(KeyAscii)End Sub Object是指窗體或控件對(duì)象名,是指窗體或控件對(duì)象名,KeyAscii 參數(shù)返回對(duì)應(yīng)參數(shù)返回對(duì)應(yīng)于于ASCII字符代碼的整型數(shù)值。字符代碼的整型數(shù)值。 6.1 鍵盤事件鍵盤事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 例例6.1 6.1 通過編程序,在一個(gè)文本框(通過編程序,在一個(gè)文本框(Text1Text1)中限定只能)中限定只能輸入數(shù)字、小數(shù)點(diǎn),只能響應(yīng)輸入數(shù)字、小數(shù)點(diǎn),只能響應(yīng)BackSpace BackSpace 鍵及回車鍵。鍵及回車鍵。Private Sub

5、Text1_KeyPress (KeyAscii As Integer) Select Case KeyAscii Case 48 to 57,46,8,13 Case Else KeyAscii=0 End SelectEnd Sub KeyPress 事件只識(shí)別事件只識(shí)別 Enter、Tab和和Backspace 鍵。不能鍵。不能夠檢測(cè)其它功能鍵、編輯鍵和定位鍵。夠檢測(cè)其它功能鍵、編輯鍵和定位鍵。 6.1 鍵盤事件鍵盤事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 當(dāng)一個(gè)對(duì)象具有焦點(diǎn)時(shí)按下(當(dāng)一個(gè)對(duì)象具有焦點(diǎn)時(shí)按下(KeyDown) 或松開或松開 ( KeyU

6、p ) 一個(gè)鍵時(shí)發(fā)生。它們報(bào)告鍵盤本身準(zhǔn)確的物理狀一個(gè)鍵時(shí)發(fā)生。它們報(bào)告鍵盤本身準(zhǔn)確的物理狀態(tài):按下鍵態(tài):按下鍵 (KeyDown) 及松開鍵及松開鍵 (KeyUp)。 KeyDown和和KeyUp事件能夠檢測(cè)其它功能鍵、編輯鍵和定事件能夠檢測(cè)其它功能鍵、編輯鍵和定位鍵。位鍵。KeyUp 和和 KeyDown 事件過程的語法格式如下:事件過程的語法格式如下:Sub Object_KeyDown(KeyCode As Integer, Shift As Integer)Sub Object_KeyUp(KeyCode As Integer, Shift As Integer)說明:說明:1Key

7、code 參數(shù)表示按下的物理鍵。上檔鍵字符和下檔鍵參數(shù)表示按下的物理鍵。上檔鍵字符和下檔鍵字符也是使用同一鍵,它們的字符也是使用同一鍵,它們的Keycode值相同。值相同。 6.1 鍵盤事件鍵盤事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 Keycode 參數(shù)通過參數(shù)通過 ASCII 值或鍵代碼常數(shù)來識(shí)別鍵。字值或鍵代碼常數(shù)來識(shí)別鍵。字母鍵的鍵代碼與此字母的大寫字符的母鍵的鍵代碼與此字母的大寫字符的 ASCII 值相同。所以值相同。所以 A 和和 a 的的 keycode 都是由都是由 Asc(A) 返回的數(shù)值。在下返回的數(shù)值。在下例中用例中用 KeyDown

8、事件判斷是否按下了事件判斷是否按下了 A 鍵:鍵:6.1 鍵盤事件鍵盤事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 Private Sub Text1_KeyDown(KeyCode As _ Integer, Shift As Integer) If KeyCode = vbKeyA Then MsgBox You pressed the A key.“ End ifEnd SubPrivate Sub Text1_KeyDown(KeyCode As _ Integer, Shift As Integer) If KeyCode = vbKey1 And s

9、hift=1 Then MsgBox You pressed the ! key.“ End ifEnd Sub6.1 鍵盤事件鍵盤事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 2shift參數(shù)參數(shù)shift表示是在該事件發(fā)生時(shí)響應(yīng)表示是在該事件發(fā)生時(shí)響應(yīng)SHIFT、CTRL 和和 ALT 鍵鍵的狀態(tài),它是一個(gè)整數(shù)。其含義與上一節(jié)中的狀態(tài),它是一個(gè)整數(shù)。其含義與上一節(jié)中MouseMove、MouseDown、MouseUp事件中的事件中的shift參數(shù)完全相同。參數(shù)完全相同。例如:下例是用例如:下例是用Shift參數(shù)判斷是否按下了字母的大寫形式。參數(shù)判斷是否按下

10、了字母的大寫形式。Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyA And Shift = 1 Then MsgBox “你按了大寫字母你按了大寫字母A鍵鍵. End ifEnd Sub6.1 鍵盤事件鍵盤事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 思考題:思考題: 編寫一個(gè)在文本框(編寫一個(gè)在文本框(Text1)中操作,能夠響應(yīng)鍵盤組合)中操作,能夠響應(yīng)鍵盤組合操作的程序,用戶所作的每一步操作都將在標(biāo)簽框(操作的程序,用戶所作的每一步操作都將

11、在標(biāo)簽框(Label1)中顯示出相關(guān)信息。中顯示出相關(guān)信息。6.1 鍵盤事件鍵盤事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 6.2 鼠標(biāo)事件鼠標(biāo)事件 大多數(shù)控件能夠識(shí)別鼠標(biāo)的大多數(shù)控件能夠識(shí)別鼠標(biāo)的MouseMove、MouseDown和和MouseUp事件,通過響應(yīng)這些鼠標(biāo)事件,能在應(yīng)用程序?qū)κ笫录?,通過響應(yīng)這些鼠標(biāo)事件,能在應(yīng)用程序?qū)κ髽?biāo)位置及狀態(tài)的變化作出響應(yīng)操作。標(biāo)位置及狀態(tài)的變化作出響應(yīng)操作。MouseMove 每當(dāng)鼠標(biāo)指針移動(dòng)到屏幕新位置時(shí)發(fā)生每當(dāng)鼠標(biāo)指針移動(dòng)到屏幕新位置時(shí)發(fā)生MouseDown 按下任意鼠標(biāo)鍵按鈕時(shí)發(fā)生按下任意鼠標(biāo)鍵按鈕時(shí)發(fā)生Mo

12、useUp 釋放任意鼠標(biāo)鍵按鈕時(shí)發(fā)生釋放任意鼠標(biāo)鍵按鈕時(shí)發(fā)生6.2.1 鼠標(biāo)事件過程鼠標(biāo)事件過程Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 MouseMove、MouseDown、MouseUp三個(gè)事件的過程語法三個(gè)事件的過程語法格式如下:格式如下:Sub Object_MouseMove(Button As Integer,Shift As Integer,_ X As Single,Y As Single)Sub Object _MouseDown(Button As Integer,Shift As Integer,_ X As Single,Y As Si

13、ngle)Sub Object _MouseUp(Button As Integer,Shift As Integer,_ X As Single,Y As Single) 其中:其中:1Object是可選的一個(gè)對(duì)象表達(dá)式,可以是窗體對(duì)象和大多是可選的一個(gè)對(duì)象表達(dá)式,可以是窗體對(duì)象和大多數(shù)可視控件。數(shù)可視控件。2Button參數(shù)是表示按下或松開鼠標(biāo)哪個(gè)按鈕,參數(shù)是表示按下或松開鼠標(biāo)哪個(gè)按鈕, 6.2 鼠標(biāo)事件鼠標(biāo)事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 參數(shù)參數(shù)Button值值參數(shù)(參數(shù)(Button)值值 說明說明vbLeftButton 1左按鈕被按下左

14、按鈕被按下vbRightButton 2右按鈕被按下右按鈕被按下vbMiddleButton 4中間按鈕被按下中間按鈕被按下 6.2 鼠標(biāo)事件鼠標(biāo)事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 參數(shù)參數(shù)Shift值值參數(shù)(參數(shù)(Shift) 值值 描述描述vbShiftMask 1SHIFT 鍵被按下鍵被按下vbCtrlMask 2CTRL 鍵被按下鍵被按下vbAltMask 4ALT 鍵被按下鍵被按下3通過通過Shift參數(shù)表示在參數(shù)表示在Button參數(shù)指定的按鈕被按下或者參數(shù)指定的按鈕被按下或者被松開的情況下鍵盤的被松開的情況下鍵盤的Shift、Ctrl和和

15、Alt鍵的狀態(tài),鍵的狀態(tài), 6.2 鼠標(biāo)事件鼠標(biāo)事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 Ctrl、Shift、Alt三鍵組合使用情況如表三鍵組合使用情況如表1216.2 鼠標(biāo)事件鼠標(biāo)事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 4. 參數(shù)參數(shù)X、Y X, Y鼠標(biāo)指針的位置鼠標(biāo)指針的位置,通過,通過X和和Y參數(shù)返回一個(gè)指定鼠參數(shù)返回一個(gè)指定鼠標(biāo)指針當(dāng)前位置的數(shù),標(biāo)指針當(dāng)前位置的數(shù),X和和Y的值是使用該對(duì)象的坐標(biāo)系統(tǒng)的值是使用該對(duì)象的坐標(biāo)系統(tǒng)表示鼠標(biāo)指針當(dāng)前位置。表示鼠標(biāo)指針當(dāng)前位置。 注意: 鼠標(biāo)事件被用來識(shí)別和響應(yīng)各種鼠標(biāo)狀

16、態(tài),并把這些狀態(tài)看作獨(dú)立的事件,在按下鼠標(biāo)按鈕并釋放時(shí),Click 事件只能把此過程識(shí)別為一個(gè)單一的單擊操作。鼠標(biāo)事件能夠區(qū)分各鼠標(biāo)按鈕及鍵盤的SHIFT、CTRL、ALT 鍵的狀態(tài)。例題:例題:使用使用MouseUp 與與 MouseDown 和和MouseMove 事件,事件,編寫一個(gè)在窗體上用鼠標(biāo)繪圖的簡單程序。編寫一個(gè)在窗體上用鼠標(biāo)繪圖的簡單程序。 6.2 鼠標(biāo)事件鼠標(biāo)事件Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 6.3.1 控件控件 拖拖 放放 (簡略介紹,一般不作要求) 在運(yùn)行時(shí)拖動(dòng)控件,通常情況下并不能自動(dòng)改變控件位置,這就必須使用Visual B

17、asic的拖放功能,通過編程,才能實(shí)現(xiàn)在運(yùn)行時(shí)拖動(dòng)控件并改變其位置。把按下鼠標(biāo)按鈕并移動(dòng)控件的操作稱為拖動(dòng),把釋放按鈕的操作稱為放下。6.3 拖放操作拖放操作Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 在運(yùn)行時(shí)間拖放鼠標(biāo)觸發(fā)DragDrop事件。源和目標(biāo):源和目標(biāo):l源:源:指被拖放的控件(不包括Menu、Timer、 Line和Shape控件)。l目標(biāo):目標(biāo):指在其上放置控件的對(duì)象,可以是窗體或 控件。注意:注意:執(zhí)行拖放操作引發(fā)的是目標(biāo)對(duì)象目標(biāo)對(duì)象的 DragDrop事件。 Private Sub Form_DragDrop(Source As Control

18、, x As Single,y As Single) Private Sub 對(duì)象名對(duì)象名_DragDrop(index As Integer,Source As Control,x As Single,y As Single)Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 index:唯一標(biāo)識(shí)控件數(shù)組中的控件。Source:被拖放的控件。x,y:鼠標(biāo)在目標(biāo)對(duì)象中的位置坐標(biāo)。過程名中的Form或?qū)ο竺礊槟繕?biāo)對(duì)象。(為了在運(yùn)行時(shí)間實(shí)現(xiàn)拖動(dòng))lDragMode屬性: 源控件源控件 DragMode屬性設(shè)置為1,表示自動(dòng)模式。(缺省值為0: 手工模式)lDragIcon屬性:設(shè)置拖放顯示的圖標(biāo)。Visual BasicVisual Basic程序設(shè)計(jì)教程程序設(shè)計(jì)教程 當(dāng)用戶用鼠標(biāo)拖動(dòng)源對(duì)象經(jīng)過目標(biāo)對(duì)象時(shí), 無論鼠標(biāo)是否釋放,都會(huì)引發(fā)目標(biāo)對(duì)象的 DragOver事件。(源對(duì)象的ragMode=1) Private Sub Form_DragOver(Source As Control, x As Single,y As Single,state As Integer)Private Sub 對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論