Visual Basic 程序設計教程(第2版)第5章end_第1頁
Visual Basic 程序設計教程(第2版)第5章end_第2頁
Visual Basic 程序設計教程(第2版)第5章end_第3頁
Visual Basic 程序設計教程(第2版)第5章end_第4頁
Visual Basic 程序設計教程(第2版)第5章end_第5頁
已閱讀5頁,還剩94頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章鼠標事件和鍵盤事件

5.1鼠標事件

5.1.1MouseDown、MuseUp、MouseMove事件

5.1.2Click、DblClick事件

5.1.3拖放事件5.2OLE托放5.3鍵盤事件

5.3.1KeyDown、KeyUp事件

5.3.2KeyPress事件5.4焦點事件

5.4.1GotFocus事件5.4.2LostFocus事件返回第5章鼠標事件和鍵盤事件

本章目的:通過本章學習了解和掌握有關(guān)VB各種事件及應用。本章的重點是鍵盤事件和鼠標事件的應用。難點是OLE拖放。5.1鼠標事件

在VisualBasic中,最基本的鼠標事件有:Click事件、Dblclick事件、MouseDown事件、MouseUp事件、MouseMove事件和DragDrop事件、DragOver事件等。5.1.1MouseDown、MouseUp、MouseMove事件

當按下鼠標任意鍵時發(fā)生MouseDown事件,放開鼠標時發(fā)生MouseUp事件,MouseMove事件是在移動鼠標時發(fā)生,并伴隨鼠標指針在對象間移動時連續(xù)不斷地產(chǎn)生。MouseDown事件過程的語法格式為:PrivateSubObject_MouseDown([IndexAsInteger,]ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)MouseUp事件過程的語法格式為:5.1.1MouseDown、MouseUp、MouseMove事件PrivateSubObject_MouseUp([IndexAsInteger,]ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)MouseMove事件過程的語法格式為:PrivateSubObject_MouseMove(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)5.1.1MouseDown、MouseUp、MouseMove事件這三個事件過程具有相同的參數(shù),它們把鼠標的信息傳給過程。其中,Object:一個對象名稱??梢詾榇绑w、多文檔(MDI)窗體和控件。Index:用來唯一的標識一個在控件數(shù)組中的控件。Button:返回鼠標的哪個按鍵被按下。當該參數(shù)為1,表示鼠標左按鍵被按下,為2表示右按鍵被按下,為4表示中間按鍵被按下。只需要在程序中對Button參數(shù)進行判斷,就可識別用戶按了哪一個鼠標按鍵。例如:5.1.1MouseDown、MouseUp、MouseMove事件IfButton=2Then……′判斷是否按下鼠標右鍵Button參數(shù)返回值也可以是各鼠標按鍵參數(shù)之和,Button參數(shù)與按下鼠標按鍵的對應關(guān)系如表所示。常數(shù)值描述VbLeftButton1左按鈕被按下VbRightButton2右按鈕被按下VbMiddleButton3中間按鈕被按下VbLeftButton+VbRightButton4左、右按鈕被按下VbLeftButton+VbMiddleButton5左按鈕、中間按鈕被按下VbMiddleButton+VbRightButton6右按鈕、中間按鈕被按下VbLeftButton+VbRightButton+VbMiddleButton7同時按下三個按鈕5.1.1MouseDown、MouseUp、MouseMove事件Shift:返回用戶按下鼠標鍵的同時是否按下鍵盤的功能鍵,即SHIFT、CTRL和ALT鍵的狀態(tài)。當該參數(shù)為1表示SHIFT鍵被按下,為2表示CTRL鍵被按下,為4表示ALT鍵被按下。Shift參數(shù)返回值也可以是各功能鍵參數(shù)的總和,例如:Shift值為5時,表示SHIFT和ALT鍵同時被按下。該參數(shù)與按下功能鍵的對應關(guān)系如表所示。常數(shù)值描述VbShiftMask1按下SHIFT鍵VbCtrlMask2按下CTRL鍵VbAltMask3按下ALT鍵VbShiftMask+VbCtrlMask4按下SHIFT和CTRL鍵VbShiftMask+VbAltMask5按下SHIFT和ALT鍵VbAltMask+VbCtrlMask6按下ALT和CTRL鍵VbShiftMask+VbCtrlMask+VbAltMask7同時按下三個按鈕5.1.1MouseDown、MouseUp、MouseMove事件x,y參數(shù):為單精度數(shù)值,返回鼠標指針的當前位置。例5.1演示一個簡單的繪圖應用程序,當用戶按下鼠標左鍵時,觸發(fā)MouseDown事件,可以開始繪圖,按住鼠標左鍵不放,在窗體上移動,觸發(fā)MouseMove事件,可以將點連成線,當用戶松開鼠標鍵時,觸發(fā)MouseUp事件,停止繪畫。5.1.1MouseDown、MouseUp、MouseMove事件本例的程序代碼:DimpaintAsBooleanDimx0,y0AsIntegerPrivateSubForm_Load()

DrawWidth=3′設置線寬

ForeColor=RGB(0,0,255)′設置前景色

EndSub5.1.1MouseDown、MouseUp、MouseMove事件PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1Thenpaint=True′啟動繪圖

x0=Xy0=YEndIf5.1.1MouseDown、MouseUp、MouseMove事件PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfpaintThenLine(X,Y)-(x0,y0)′畫線

x0=Xy0=YEndIfEndSub

5.1.1MouseDown、MouseUp、MouseMove事件PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)paint=False′禁止繪圖

EndSub5.1.1MouseDown、MouseUp、MouseMove事件本例中MouseDown事件過程用于設置起始點;MouseMove事件過程用于畫線;MouseUp事件過程停止畫線。本例的運行結(jié)果如圖所示。

5.1.2Click、DblClick事件

Click事件是在一個對象上單擊鼠標按鍵時發(fā)生。Click事件不識別用戶單擊的是哪個鼠標按鍵,即單擊鼠標左鍵或右鍵都能觸發(fā)Click事件。DblClick事件是在一個對象上雙擊鼠標按鍵時發(fā)生。DblClick事件也不識別用戶雙擊哪個鼠標按鍵,即雙擊鼠標左鍵或右鍵都能觸發(fā)DblClick事件。

5.1.2Click、DblClick事件

Click事件過程的語法格式為:PrivateSubObject_Click([IndexAsInteger])DblClick事件過程的語法格式為:PrivateSubObject_DblClick([IndexAsInteger])Object:一個對象名稱??梢詾榇绑w和控件。Index:用來唯一地標識一個在控件數(shù)組中的控件。

5.1.2Click、DblClick事件

對于窗體,Click事件和DblClick事件是在用鼠標單擊或雙擊窗體空白處時發(fā)生;對于控件,Click事件和DblClick事件是在用鼠標單擊或雙擊控件時發(fā)生。單擊一個控件時,除了產(chǎn)生Click事件以外,還可以產(chǎn)生MouseDown和MouseUp事件,這三種事件發(fā)生的順序根據(jù)控件的不同而不同。例如:對于CommandButton控件,事件發(fā)生的順序為:MouseDown,Click,MouseUp;對于Label控件,事件發(fā)生的順序為:MouseDown,

MouseUp,Click。5.1.2Click、DblClick事件

如果想?yún)^(qū)分單擊鼠標的左、右、中哪一個按鍵,使用MouseDown和MouseUp事件。

例5.2在以下程序中,用鼠標單擊窗體的空白處,打開顏色對話框。PrivateSubForm_Click()CommonDialog1.Flags=cdlCCRGBInitCommonDialog1.ShowColorEndSub在上例的基礎(chǔ)上,改用鼠標雙擊窗體的空白處,打開顏色對話框。5.1.2Click、DblClick事件PrivateSubForm_DblClick()CommonDialog1.Flags=cdlCCRGBInitCommonDialog1.ShowColorEndSub5.1.3拖放事件

“拖放”就是使用鼠標將對象從一個地方拖動到另一個地方再放下。拖放操作,若對控件施行將涉及控件的DragMode屬性、DragIcon屬性,Drag方法和DragDrop事件、DragOver事件。

5.1.3拖放事件

1.DragMode屬性DragMode屬性用于設置拖動模式,除menu、timer等少數(shù)控件外,所有控件都支持DragMode屬性。如果DragMode屬性設置為1,則啟用自動拖動模式,當用戶在源對象上按下鼠標左鍵同時拖動鼠標,源對象就隨鼠標移動到目標對象上,當釋放鼠標時,在目標對象上產(chǎn)生DragDrop事件;此時,必須在MouseDown事件過程中,用Drag方法啟動“拖”操作,在停止拖動時,也使用Drag方法結(jié)束拖動操作。

5.1.3拖放事件

2.DragIcon屬性控件DragIcon屬性的值是一個圖標的文件名,設置了此值,在拖動一個對象移動過程中,控件就變成了該圖標。在放下后再恢復成原來的控件。如果控件的DragIcon屬性設置為空,那么拖動時,控件只是變成灰色的邊框。

5.1.3拖放事件

3.Drag方法當控件的DragMode屬性設置為0(手工拖放)時,需要用Drag方法來控制控件的啟動拖放、結(jié)束拖放等操作。Drag方法的語法格式為:控件名.Drag參數(shù)參數(shù)為0~2的整數(shù):0—取消控件的拖放操作。1—啟動控件的拖放操作。2—

結(jié)束并停止控件的拖放,釋放控件。

5.1.3拖放事件

4.DragDrop事件當源對象被拖動到某個目標對象上,并釋放鼠標時,或在程序中采用Drag方法結(jié)束拖放時,便觸發(fā)DragDrop事件。例如:可將源控件移到一個新的位置或?qū)⒁粋€文件從一個位置復制到另一個位置。DragDrop事件過程的語法格式為:PrivateSubObject_DragDrop([IndexAsInteger,]SourceAsControl,xAsSingle,yAsSingle)

5.1.3拖放事件Object:一個對象名稱。Index:用來唯一地標識一個在控件數(shù)組中的控件。Source:正在被拖動的控件??捎么藚?shù)將屬性和方法包括在事件過程中,例如:Source.Visible=0x,y參數(shù):是一個指定當前鼠標指針在目標窗體或控件中的位置坐標。5.1.3拖放事件例5.3用鼠標拖動文字框中的文字,放在圖像框內(nèi)并顯示出來。窗體中有兩個控件:PictureBox控件Picture1和TextBox控件Text1。其中TextBox控件Text1的DragMode屬性為1,實例運行結(jié)果如圖所示。

5.1.3拖放事件5.1.3拖放事件程序代碼如下:

PrivateSubForm_Load()Text1.DragMode=0EndSubPrivateSubPicture1_DragDrop(SourceAsControl,XAsSingle,YAsSingle)Picture1.CurrentX=XPicture1.CurrentY=YPicture1.PrintText1.SelTextEndSub

5.1.3拖放事件PrivateSubText1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1ThenText1.DragMode=1EndIfEndSub5.1.3拖放事件5.DragOver事件當源對象被拖動到某個目標對象上,在該目標對象上就會觸發(fā)DragOver事件,DragOver事件是先于DragDrop事件發(fā)生的。DragOver事件用于監(jiān)控被拖動對象在目標對象上的狀態(tài)。例如:通過加亮目標(可以由BackColor或ForeColor屬性設置)以及顯示一個特定的拖動指針(可以由DragIcon或MousePointer屬性設置)有效地監(jiān)控被拖動對象在目標上的進入、離開等狀態(tài)。5.1.3拖放事件DragOver事件過程的語法格式為:PrivateSubObject_DragOver([IndexAsInteger,]SourceAsControl,xAsSingle,yAsSingle,StateAsInteger)5.1.3拖放事件State:為一個整數(shù),值為0、1和2。

0表示進入,即源控件正被向一個目標范圍內(nèi)拖動。1表示離開,即源控件正被向一個目標范圍外拖動。2表示跨越,即源控件在目標范圍內(nèi)從一個位置移到另一位置。

5.1.3拖放事件5.DragOver事件例如:當State參數(shù)的設置為0時,可使一個可能的目標加亮,而當State參數(shù)的設置為1時,可恢復該對象的外觀。例5.4使用DragOver事件,窗體中有兩個控件:TextBox控件Text1和PictureBox控件Picture1,其中Text1的DragMode屬性值為1,如圖所示。5.1.3拖放事件

5.1.3拖放事件當用鼠標拖動文本框到Picture1時,鼠標變成圖標如左圖所示,當結(jié)束拖動時,在Picture1窗體內(nèi)顯示“信息”如右圖所示。5.1.3拖放事件本例程序代碼如下:

PrivateSubForm_Load()Text1.Text="文字"EndSubPrivateSubPicture1_DragDrop(SourceAsControl,XAsSingle,YAsSingle)

Source.DragIcon=LoadPicture()Picture1.Print"信息"EndSub5.1.3拖放事件PrivateSubPicture1_DragOver(SourceAsControl,XAsSingle,YAsSingle,StateAsInteger)SelectCaseStateCasevbEnterSource.DragIcon=LoadPicture("c:\mydocuments\info.ico")CasevbLeave

Source.DragIcon=LoadPicture()EndSelectEndSub5.1.3拖放事件例5.5通過顯示一個特定的拖動指針(在屬性窗口設置MouseIcon

屬性),有效地監(jiān)控被拖動對象在目標上的進入、離開等狀態(tài)。當鼠標進入窗體內(nèi),鼠標指針為所選的圖形狀態(tài),當鼠標離開窗體和按下鼠標右鍵,鼠標指針為缺省狀態(tài)。

PrivateSubForm_Load()Style=vbYesNo+vbQuestion+vbDefaultButton2t=MsgBox("拖放位置",Style,"信息提示")EndSub5.1.3拖放事件PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)Ift=vbYesThenSource.MoveX,YForm1.MousePointer=0′使用缺省鼠標指針

EndIfEndSub

5.1.3拖放事件PrivateSubForm_DragOver(SourceAsControl,XAsSingle,YAsSingle,StateAsInteger)IfState=0OrState=2ThenForm1.MousePointer=99′使用圖形鼠標指針

EndIfEndSub

5.1.3拖放事件PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2ThenForm1.MousePointer=0′如果按下鼠標右鍵使用缺省鼠標指針

EndIfEndSub5.2OLE拖放

OLE拖放是將數(shù)據(jù)從一個控件或應用程序中移到另一個控件或應用程序中。OLE拖放分自動拖放與手工拖放,自動拖放不需要編寫代碼來響應OLE拖放事件,而手工拖放需要通過編程來響應OLE拖放事件。通過控件的OLEDragMode屬性和OLEDropMode屬性的設置來決定控件是自動還是手工實現(xiàn)“拖”或“放”的操作。

5.2OLE拖放(1)OLEDragMode屬性該屬性決定控件自動還是手工實現(xiàn)“拖”操作。默認值0為手動拖動,例如:通過語句text1.OLEDrag來啟動拖動;1為自動拖動。(2)OLEDropMode屬性該屬性確定控件是否能作為OLE放下的目標對象,以及決定控件是自動還是手工實現(xiàn)“拖”操作。默認值為0表示控件不接受OLE放下操作;1為手工放下,需要編程;2為自動放下。

5.2OLE拖放例如,用自動拖動的方法在窗體上將一個文本框(Text1)中的內(nèi)容移動到另一個文本框(Text2)中。只需將文本框Text1的OLEDragMode屬性設置為1(自動拖動),文本框Text2的OLEDropMode屬性設置為2(自動放下)。當運行時即可拖動Text1中選擇的文本復制到文本框Text2中去。當用戶設置好屬性,選定數(shù)據(jù)并按住鼠標就會觸發(fā)OLEStartDrag事件。

5.2.1OLEStartDrag事件

該事件在拖放源選定數(shù)據(jù)并按下鼠標鍵拖動數(shù)據(jù)時觸發(fā)。OLEStartDrag事件過程的語法格式為:

PrivateSubObject_StartDrag(DataAsDataObject,AllowedEffectsAsLong)Object:一個對象名稱。Data:為DataObject對象,確定拖動源提供的數(shù)據(jù)。AllowedEffects:為長整型數(shù),確定允許的放下效果,

0為允許放下,1為允許復制,2為允許移動。

5.2.2OLEDragOver事件

該事件是當拖動源在目標上拖動時發(fā)生的。如果要對鼠標指針形狀進行控制,在目標的OLEDragOver事件和拖放源的OLEGiveFeedback事件中編程實現(xiàn)。OLEDragOver事件過程的語法格式為:

PrivateSubObject_OLEDragOver(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle,StateAsInteger)

5.2.2OLEDragOver事件Object:一個對象名稱。Data:為DataObject對象,確定拖動源提供的數(shù)據(jù)。Effect:通知拖動源目標支持的放下效果。在事件過程中,此參數(shù)必須被目標部件正確地設置。0為不支持放下,1為支持復制,2為支持移動,&H80000000為滾動正在或?qū)⒁l(fā)生。5.2.2OLEDragOver事件Button:該參數(shù)返回鼠標的哪個按鈕被按下。Shift:該參數(shù)返回用戶是否按下鍵盤的功能鍵,即SHIFT、CTRL和ALT鍵的狀態(tài)。x,y參數(shù):為單精度數(shù)值,返回鼠標指針的當前位置。5.2.3OLEDragDrop事件

該事件在拖放源被放到目標時發(fā)生的。但該事件被觸發(fā)還有一個必要條件:僅當窗體的OLEDragMode屬性被設置為1時,此事件才發(fā)生。OLEDragDrop事件過程的語法格式為:PrivateSubObject_OLEDragDrop(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

5.2.3OLEDragDrop事件Data:為DataObject對象,確定拖動源提供的數(shù)據(jù)。Effect:通知拖動源目標支持的放下效果。Button、Shift、x,y參數(shù)與前面介紹的相同。5.2.4OLEGiveFeedback事件

當觸發(fā)目標的OLEDragOver事件時,OLEDragOver事件的Effect參數(shù)通知拖動源目標支持的放下效果,然后觸發(fā)拖動源的OLEGiveFeedback事件。OLEGiveFeedback事件過程的語法格式為:

PrivateSubObject_OLEGiveFeedback(EffectAsLong,DefaultcursorsAsBoolean)當Defaultcursors=True時,用默認的鼠標圖標,當Defaultcursors=False時,使用自定義鼠標圖標,用MousePointer屬性來設置圖標。

5.2.5OLESetData事件

當目標從拖動源獲取數(shù)據(jù),還沒加載數(shù)據(jù)時拖動源觸發(fā)OLESetData事件。OLESetData事件過程的語法格式為:

PrivateSubObject_OLESetData(DataAsDataObject,DataformatAsInteger)Dataformat:用于確定目標所需要的數(shù)據(jù)格式,拖動源用此值來確定向DataObject對象加載的內(nèi)容。

5.2.6OLECompleteDrag事件

該事件在拖動源被放到目標時發(fā)生,并通知拖放源拖放操作被執(zhí)行或取消。OLECompleteDrag事件過程的語法格式為:

PrivateSubObject_OLECompleteDrag([EffectAsLong])5.2.6OLECompleteDrag事件

例5.6在窗體中手工拖動的方式將一個文本框(Text1)中的內(nèi)容復制到另一個文本框(Text2)。如圖5.6所示,界面包含兩個文本框,一個為拖動源(Text1),另一個為目標(Text2)。5.2.6OLECompleteDrag事件在Text1中選中“文本3”,拖放到Text2時,運行結(jié)果如左圖所示;當按下Ctrl鍵,運行結(jié)果如右圖所示。

5.2.6OLECompleteDrag事件程序代碼如下:PrivateSubText1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Text1.OLEDrag′啟動手工拖動

EndSub

5.2.6OLECompleteDrag事件PrivateSubText1_OLECompleteDrag(EffectAsLong)IfEffect=2Then′當移動操作時,清除所選文本

Text1.SelText=""EndIf

Screen.MousePointer=0EndSub5.2.6OLECompleteDrag事件PrivateSubText2_OLEDragDrop(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfData.GetFormat(vbCFText)Then′將拖動內(nèi)容送到目標Text2IfShiftAndvbCtrlMaskThenText2.Text=Data.GetData(vbCFText)Effect=1Else

5.2.6OLECompleteDrag事件Text2.Text=Data.GetData(vbCFText)Effect=2EndIfElseEffect=0EndIfEndSub5.2.6OLECompleteDrag事件PrivateSubText2_OLEDragOver(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle,StateAsInteger)IfData.GetFormat(vbCFText)Then′設置放下效果

IfShiftAndvbCtrlMaskThen′當按下Ctrl鍵為復制操作

Effect=1AndEffectElse

5.2.6OLECompleteDrag事件Effect=2AndEffect′為移動操作’

EndIfElseEffect=0EndIfEndSub5.2.6OLECompleteDrag事件PrivateSubText1_OLEGiveFeedback(EffectAsLong,DefaultCursorsAsBoolean)

DefaultCursors=False′設置鼠標形狀支持各種操作

SelectCaseEffectCase0

Screen.MousePointer=12Case1

Screen.MousePointer=4

5.2.6OLECompleteDrag事件Case2

Screen.MousePointer=4CaseElse

DefaultCursors=TrueEndSelectEndSub5.2.6OLECompleteDrag事件PrivateSubText1_OLESetData(DataAsDataObject,DataFormatAsInteger)IfDataFormat=1Then′將選定內(nèi)容送到DataObject對象中

Data.SetDataText1.SelText,1EndIfEndSub

5.2.6OLECompleteDrag事件PrivateSubText1_OLEStartDrag(DataAsDataObject,AllowedEffectsAsLong)

AllowedEffects=2Or1′指定拖動效果

Data.SetData,1EndSub5.3鍵盤事件

鍵盤事件有三種:KeyDown事件、KeyUp事件和KeyPress事件。KeyDown事件在按下鍵盤的任意鍵時觸發(fā),KeyUp事件在釋放鍵盤的任意鍵時觸發(fā)。KeyDown事件過程的語法格式為:

PrivateSubObject_KeyDown([IndexAsInteger,]KeycodeAsInteger,ShiftAsInteger)5.3.1KeyDown、KeyUp事件

KeyUp事件過程的語法格式為:

PrivateSubObject_KeyUp([IndexAsInteger,]KeycodeAsInteger,ShiftAsInteger)Object:一個對象名稱。Index:唯一地標識一個在控件數(shù)組中的控件。5.3.1KeyDown、KeyUp事件Keycode:是一個鍵代碼,該參數(shù)既可是一個整數(shù)值代碼,也可以是VisualBasic常數(shù)。例如,113(vbKeyF2)為F2鍵、35(vbKeyHome)為Home鍵。Shift:用來描述鍵盤的SHIFT、CTRL和ALT鍵的狀態(tài),與鼠標事件中的Shift參數(shù)意義相同。5.3.1KeyDown、KeyUp事件

下列情況不能引用KeyDown和KeyUp事件:(1)窗體有一個CommonButton控件,并且Default屬性設置為True時的Enter鍵。(2)窗體有一個CommonButton控件,并且Cancel屬性設置為True時的Esc鍵。(3)Tab鍵。

5.3.1KeyDown、KeyUp事件

例5.7當按下字母鍵時,窗體中顯示該字符并且不斷移動,直到松開該鍵。本例的程序代碼:

PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode>65AndKeyCode<90ThenLabel2.Caption=Chr(KeyCode)

5.3.1KeyDown、KeyUp事件

Label2.Left=Label2.Left+15

MsgBox"Pleasepressotherkey!",65,"messagebox"EndIfEndSub5.3.1KeyDown、KeyUp事件

本例的運行結(jié)果如圖所示。5.3.2KeyPress事件

KeyPress事件響應按下標準ASCII字符表中所對應的鍵。KeyPress事件過程的語法格式為:

PrivateSubObject_KeyPress([IndexAsInteger,]KeyAsciiAsInteger)Object:一個對象名稱。Index:用來唯一地標識一個在控件數(shù)組中的控件。5.3.2KeyPress事件KeyAscii:返回一個按鍵對應的AscII碼整數(shù)值。KeyPress事件過程通過KeyAscii參數(shù),向?qū)ο髠鬟f輸入字符的AscII碼,在事件過程中,可用Chr函數(shù)將其轉(zhuǎn)換為對應的字符。例5.8有一個TextBox控件,在文本框中輸入的字母以大寫顯示。5.3.2KeyPress事件

PrivateSubText1_KeyPress(KeyAsciiAsInteger)Char=Chr(KeyAscii)

KeyAscii=Asc(UCase(Char))EndSub5.4焦點事件

焦點是控件接受用戶鍵盤輸入的當前狀態(tài)。假設窗體中有兩個以上控件,任何時候只能有一個控件可接受輸入。能夠接受輸入的控件事件成為焦點。當對象獲得焦點時觸發(fā)GotFocus事件,獲得焦點可以通過Tab切換、單擊選定的對象或在代碼中用SetFocus方法改變焦點來實現(xiàn)。5.4.1GotFocus事件

GotFocus事件過程的語法格式為:

PrivateSubObject_GotFocus([IndexAsInteger])Index參數(shù)用于唯一地標識一個在控件數(shù)組中的控件。一個控件僅當其Enabled和Visible屬性都設置為True時才能接收焦點。5.4.1GotFocus事件

例5.9使用GotFocus事件完成信息輸入時的提示。在窗口上控件為:TextBox控件Text1用于輸入姓名;TextBox控件Text2用于輸入出生日期;Label控件Label2用于顯示提示信息。當要輸入姓名時,顯示“請輸入姓名”如上圖所示;當要輸入出生日期時,顯示“請輸入出生日期”如下圖所示。5.4.1GotFocus事件

5.4.1GotFocus事件程序代碼如下:

PrivateSubText1_GotFocus()Label2.Caption="請輸入姓名!"

EndSub

PrivateSubText2_GotFocus()Label2.Caption="請輸入出生日期!"

EndSub

5.4.2LostFocus事件LostFocus事件在一個對象失去焦點時發(fā)生,焦點的失去是由于使用Tab鍵切換焦點、單擊另一個對象,或在代碼中用SetFocus方法改變焦點的結(jié)果。LostFocus事件過程的語法格式為:

PrivateSubObject_LostFocus([IndexAsInteger])LostFocus事件過程主要是用來對更新進行驗證和確認。使用LostFocus可以在焦點移離控件時引進確認。5.4.2LostFocus事件例5.10在例5.9的程序代碼中加入以下代碼:

PrivateSubText1_LostFocus()IfText1.Text=""Then

MsgBox"姓名沒有輸入內(nèi)容,請重新輸入!"EndIfEndSub5.4.2LostFocus事件程序運行后,當姓名框內(nèi)沒有輸入姓名時,而輸入出生日期,會出現(xiàn)如圖所示的提示。上機實驗五鼠標事件和鍵盤事件

實驗目的1.了解、掌握VB中鼠標事件的作用和使用方法。2.了解、掌握VB中鍵盤事件的作用和使用方法。二、實驗內(nèi)容編寫如圖所示的程序,要求實現(xiàn)畫筆的基本功能并通過鍵盤改變線條的顏色和粗細。(1)在窗體上添加一個標簽控件并按下表所示設置其屬性??丶傩悦麑傩灾礔orm(窗體)NameForm1Caption"我的畫筆"Label(標簽)NameLabel1Caption"清空"(2)在代碼窗口中輸入如下的事件過程:PublicPX,PYAsInteger‘畫筆的坐標(X,Y)PublicDAsB

溫馨提示

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

評論

0/150

提交評論