查看匯總:2014計算機二級VB考試重難點分析匯總
第10章 鍵盤與鼠標事件
本章主要考查鍵盤事件與鼠標事件,包括KeyPress事件、KeyDown和KeyUp事件、鼠標事件、鼠標光標的形狀與拖放等知識點。通過對歷年試卷內(nèi)容的分析,本章考核內(nèi)容約占6%,屬于一般考查對象。
10.1 鍵盤事件
使用鍵盤事件過程,可以處理當按下或釋放鍵盤上某個鍵時所執(zhí)行的操作。
10.1.1 考點1:KeyPress事件
當壓下鍵盤上的某個鍵時,將發(fā)生KeyPress事件。該事件可用于窗體、復(fù)選框、組合框、命令按鈕、列表框、圖片框、文本框、滾動條及與文件有關(guān)的控件。嚴格地說,當按下某個鍵時,所觸發(fā)的是擁有輸入焦點(Focus)的那個控件的KeyPress事件。在某一時刻,輸入焦點只能位于某一個控件上,如果窗體上沒有活動的或可見的控件,則輸入焦點位于窗體上。當一個控件或窗體擁有輸入焦點時,該控件或窗體將接收從鍵盤上輸入的信息。例如,假定一個文本框擁有輸入焦點,則從鍵盤上輸入的任何字符都將在該文本框中回顯。
在窗體上畫一個控件(指前面所講的可以發(fā)生KeyPress事件的控件),比如文本框,并雙擊該控件,進入程序代碼窗口后,從“過程”框中選取KeyPress,即可定義KeyPress事件過程。一般格式如下:
Private Sub Text1 _ KeyPress(KeyAscii As Integer)
……
End Sub
KeyPress事件帶有一個參數(shù),這個參數(shù)有兩種形式,第一種形式是Index As Integer,只用于控件數(shù)組;第二種形式是KeyAscii As Integer,用于單個控件。上面列出的是第二種形式。KeyPress事件用來識別按鍵的ASCII碼。參數(shù)KeyAscii是一個預(yù)定義的變量,執(zhí)行KeyPress事件過程時,KeyAscii是所按鍵的ASCII碼。
說明:
利用KeyPress事件可以對輸入的值進行限制;
利用KeyPress事件可以捕捉擊鍵動作;
在KeyPress過程中可以修改KeyAscii變量的值。如果進行了修改,Visual Basic控件中輸入修改后的字符,而不是用戶輸入的字符。
例10.1.1 以下關(guān)于KeyPress事件過程參數(shù)KeyAscii的敘述中,正確的是( )。[2005年9月 填空第29題]
A.KeyAscii參數(shù)是所按鍵的ASCII碼 B.KeyAscii參數(shù)的數(shù)據(jù)類型為字符串
C.KeyAscii參數(shù)可以省略 D.KeyAscii參數(shù)是所按鍵上標注的字符
解析:KeyPress事件帶有一個參數(shù),這個參數(shù)有兩種形式。第一種形式是Index As Integer,只用于控件數(shù)組;第二種形式是KeyAscii As Integer,用于單個控件。參數(shù)KeyAscii是一個預(yù)定義的變量,執(zhí)行KeyPress事件過程時,KeyAscii是所按鍵的ASCII碼,并且該參數(shù)不能省略。
答案:A
小技巧:在默認情況下,控件的鍵盤事件優(yōu)先于窗體的鍵盤事件。因此在發(fā)生鍵盤事件時,總是先激活控件的鍵盤事件。如果希望窗體先接收鍵盤事件,則必須把窗體的KeyPreview屬性設(shè)置為True,否則不能激活窗體的鍵盤事件。
10.1.2 考點2:KeyDown和KeyUp事件
與KeyPress事件不同,KeyPress并不反映鍵盤的直接狀態(tài),而KeyDown和KeyUp事件返回的是鍵盤的直接狀態(tài)。換言之,KeyDown和KeyUp事件返回的是“鍵”,而KeyPress事件返回的是“字符”的ASCII碼。例如,當按字母鍵“A”時,KeyDown所得到的KeyCode碼(KeyDown事件的參數(shù))與字母鍵“a”是相同的,而對KeyPress來說,所得到的ASCII碼不一樣。
KeyDown和KeyUp事件的參數(shù)也有兩種形式,其中Index As Integer只用于控件數(shù)組,而KeyCode As Integer,Shift As Integer用于單個控件。
說明:
參數(shù)KeyCode是按鍵實際的ASCII碼。該碼以“鍵”為準,而不是以“字符”為準。也就是說,大寫字母與小寫字母使用同一個鍵,它們的KeyCode相同(使用大寫字母的ASCII碼);
轉(zhuǎn)換鍵,指的是三個轉(zhuǎn)換鍵的狀態(tài),包括Shift、Ctrl和Alt,這三個鍵分別以二進制形式表示,每個鍵有三位,Shift鍵為001,Ctrl鍵為010,Alt鍵為100;
KeyDown是當一個鍵被按下時所產(chǎn)生的事件,而KeyUp是松開被壓下的鍵時所產(chǎn)生的事件。
例10.1.2 在窗體上畫1個文本框,其名稱為Text1,然后編寫如下過程:
Private Sub Text1_KeyDown (KeyCode As Integer ,Shift As Integer)
Print Chr(KeyCode)
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer,Shift As Integer)
Print Chr(KeyCode+2)
End Sub
程序運行后,把焦點移到文本框中,此時如果敲擊“A”鍵,則輸出結(jié)果為( )。[2006年4月 選擇第29題]
A.A B.A C.A D.A
A B C D
解析:敲擊“A”鍵的動作,首先是按下該鍵觸發(fā)Text1_KeyDown事件,通過Print Chr(KeyCode)輸出“A”;然后是松開被按下的“A”鍵,此時觸發(fā)Text1_KeyUp事件,通過Print Chr(KeyCode+2)輸出“C”。
答案:C
警鐘長鳴:在鍵盤上按下一個鍵總是會觸發(fā)KeyDown事件、KeyUp事件和KeyPress事件。
例10.1.3 在窗體上畫1個命令按鈕和1個文本框,其名稱分別為Command1和Text1,然后編寫如下代碼:
Dim SaveAll As String
Private Sub Command1_Click()
Text1.Text=Left(UCase(SaveAll),4)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
SaveAll = SaveAll +Chr(KeyAscii)
End Sub
程序運行后,在文本框中輸入abcdefg,單擊命令按鈕,則文本框中顯示的內(nèi)容是____。[2006年4月 填空第9題]
解析:Text1_KeyPress過程將用戶在文本框中所輸入的內(nèi)容保存到變量SaveAll中,本例輸入“abcdefg”,則SaveAll=“abcdefg”;Left(UCase(SaveAll),4)函數(shù)即為對“abcdefg”轉(zhuǎn)換為大寫后取前四個字母,即“ABCD”。
答案:ABCD
小技巧:利用邏輯運算符And可以判斷是否按下了某個轉(zhuǎn)換鍵,可以在事件過程中通過判斷是否按下了某個或某幾個鍵來執(zhí)行指定的操作。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |