《Visual Basic程序設計教程(第3版)》第5章常用事件及應用_第1頁
《Visual Basic程序設計教程(第3版)》第5章常用事件及應用_第2頁
《Visual Basic程序設計教程(第3版)》第5章常用事件及應用_第3頁
《Visual Basic程序設計教程(第3版)》第5章常用事件及應用_第4頁
《Visual Basic程序設計教程(第3版)》第5章常用事件及應用_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章常用事件及應用第5章常用事件及應用25.1鼠標事件5.2OLE拖放5.3鍵盤事件5.4焦點事件5.5應用案例與設計—簡單繪畫板應用程序的設計5.1鼠標事件在VisualBasic中,最基本的鼠標事件有:Click、Dblclick、MouseDown、MouseUp、MouseMove和DragDrop、DragOverMouseDown、MouseUp和

MouseMove事件當按下鼠標任意鍵時發(fā)生MouseDown事件,放開鼠標按鍵時發(fā)生MouseUp事件,MouseMove事件是在移動鼠標時發(fā)生,并且伴隨鼠標指針在對象間移動,連續(xù)不斷地產(chǎn)生。MouseDown、MouseUp和

MouseMove事件(續(xù))MouseDown事件過程的語法格式:PrivateSubObject_MouseDown([IndexAsInteger,]ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)MouseUp事件過程的語法格式:PrivateSubObject_MouseUp([IndexAsInteger,]ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)MouseMove事件過程的語法格式:PrivateSubObject_MouseMove(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)MouseDown、MouseUp和

MouseMove事件(續(xù))【例5.1】演示一個簡單的繪圖應用程序,當用戶按下鼠標左鍵時,觸發(fā)MouseDown事件,可以開始繪圖,按住鼠標左鍵不放,在窗體上移動,觸發(fā)MouseMove事件,可以將點連成線,當用戶松開鼠標鍵時,觸發(fā)MouseUp事件,停止繪畫。MouseDown、MouseUp和

MouseMove事件(續(xù))DimpaintAsBooleanDimx0,y0AsIntegerPrivateSubForm_Load()

DrawWidth=3 '設置線寬

ForeColor=RGB(0,0,255) '設置前景色EndSubMouseDown、MouseUp和

MouseMove事件(續(xù))PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1Thenpaint=True '啟動繪圖

x0=Xy0=YEndIfEndSubMouseDown、MouseUp和

MouseMove事件(續(xù))PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfpaintThenLine(X,Y)-(x0,y0) '畫線

x0=Xy0=YEndIfEndSubMouseDown、MouseUp和

MouseMove事件(續(xù))PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)paint=False '禁止繪圖

EndSub圖5.1運行結果本例中MouseDown事件過程用于設置起始點;MouseMove事件過程用于畫線;MouseUp事件過程停止畫線。本例的運行結果如圖5.1所示。MouseDown、MouseUp和

MouseMove事件(續(xù))圖5.1運行結果Click、DblClick事件Click事件是在一個對象上單擊鼠標按鍵時發(fā)生的。Click事件過程的語法格式:PrivateSubObject_Click([IndexAsInteger])DblClick事件過程的語法格式:PrivateSubObject_DblClick([IndexAsInteger])Click、DblClick事件(續(xù))【例5.2】在以下程序中,用鼠標單擊窗體的空白處,打開“顏色”對話框。拖放事件1.DragMode屬性2.DragIcon屬性3.Drag方法4.DragDrop事件5.DragOver事件【例5.3】用鼠標拖動文字框中的文字,放在圖像框內(nèi)并顯示出來。窗體中有兩個控件:PictureBox控件Picture1和TextBox控件Text1。其中TextBox控件Text1的DragMode屬性值為1,而且在鼠標拖曳過程中鼠標形狀發(fā)生變化拖放事件(續(xù))圖5.2實例運行結果拖放事件(續(xù))PrivateSubForm_Load()Text1.DragMode=0Text1.Text="鼠標事件示例----鼠標變化"EndSubPrivateSubPicture1_DragDrop(SourceAsControl,XAsSingle,YAsSingle)Ift=vbYesThen

Source.MoveX,YForm1.MousePointer=0'使用默認鼠標指針

EndIfPicture1.CurrentX=XPicture1.CurrentY=YPicture1.PrintText1.SelText

Source.DragIcon=LoadPicture()EndSub拖放事件(續(xù))PrivateSubPicture1_DragOver(SourceAsControl,XAsSingle,YAsSingle,StateAsInteger)IfState=0OrState=2ThenForm1.MousePointer=99'使用圖形鼠標指針

EndIfSelectCaseStateCasevbEnter

Source.DragIcon=LoadPicture("c:\02.ico")CasevbLeave

Source.DragIcon=LoadPicture()EndSelectText1.DragMode=0EndSub拖放事件(續(xù))PrivateSubText1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1ThenText1.DragMode=1EndIfEndSub5.2OLE拖放OLE拖放是將數(shù)據(jù)從一個控件或應用程序中移到另一個控件或應用程序中。OLE拖放是移動和復制數(shù)據(jù)最快捷的方式。(1)OLEDragMode屬性(2)OLEDropMode屬性5.2OLE拖放(續(xù))OLE拖放常觸發(fā)以下事件:1.OLEStartDrag事件PrivateSubObject_StartDrag(DataAsDataObject,AllowedEffectsAsLong)2.OLEDragOver事件PrivateSubObject_OLEDragOver(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle,StateAsInteger)3.OLEDragDrop事件PrivateSubObject_OLEDragDrop(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)5.2OLE拖放(續(xù))4.OLEGiveFeedback事件PrivateSubObject_OLEGiveFeedback(EffectAsLong,DefaultcursorsAsBoolean)5.OLESetData事件PrivateSubObject_OLESetData(DataAsDataObject,DataformatAsInteger)6.OLECompleteDrag事件PrivateSubObject_OLECompleteDrag([EffectAsLong])5.2OLE拖放(續(xù))【例5.4】在窗體中手工拖動的方式將一個文本框(Text1)中的內(nèi)容復制到另一個文本框(Text2)中。如圖5.3所示,界面包含2個文本框:一個為拖動源(Text1),另一個為目標(Text2)。圖5.3實例界面5.2OLE拖放(續(xù))在Text1中選中“文本3”,拖放到Text2時,運行結果如圖5.4所示;當按下Ctrl鍵,運行結果如圖5.5所示。圖5.4拖放到Text2的運行結果5.2OLE拖放(續(xù))PrivateSubText1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Text1.OLEDrag '啟動手工拖動EndSubPrivateSubText1_OLECompleteDrag(EffectAsLong)IfEffect=2Then '當移動操作時,清除所選文本

Text1.SelText=""EndIf

Screen.MousePointer=0EndSub5.2OLE拖放(續(xù))PrivateSubText2_OLEDragDrop(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfData.GetFormat(vbCFText)Then '將拖動內(nèi)容送到目標Text2IfShiftAndvbCtrlMaskThenText2.Text=Data.GetData(vbCFText)Effect=1ElseText2.Text=Data.GetData(vbCFText)Effect=2EndIfElseEffect=0EndIfEndSub5.2OLE拖放(續(xù))PrivateSubText2_OLEDragOver(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle,StateAsInteger)IfData.GetFormat(vbCFText)Then '設置放下效果

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

Effect=1AndEffectElseEffect=2AndEffect '為移動操作

EndIfElseEffect=0EndIfEndSub5.2OLE拖放(續(xù))PrivateSubText1_OLEGiveFeedback(EffectAsLong,DefaultCursorsAsBoolean)

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

SelectCaseEffectCase0

Screen.MousePointer=12Case1

Screen.MousePointer=4Case2

Screen.MousePointer=4CaseElse

DefaultCursors=TrueEndSelectEndSub5.2OLE拖放(續(xù))PrivateSubText1_OLESetData(DataAsDataObject,DataFormatAsInteger)IfDataFormat=1Then '將選定內(nèi)容送到DataObject對象中

Data.SetDataText1.SelText,1EndIfEndSubPrivateSubText1_OLEStartDrag(DataAsDataObject,AllowedEffectsAsLong)

AllowedEffects=2Or1 '指定拖動效果

Data.SetData,1EndSub5.2OLE拖放(續(xù))圖5.5按下Ctrl鍵的運行結果5.3鍵盤事件鍵盤事件和鼠標事件都是用戶與程序之間交互操作的主要元素。單擊鼠標可以觸發(fā)事件,按鍵也可以觸發(fā)事件。

KeyDown、KeyUp事件KeyDown事件過程的語法格式為:PrivateSubObject_KeyDown([IndexAsInteger,]KeycodeAsInteger,ShiftAsInteger)KeyUp事件過程的語法格式為:PrivateSubObject_KeyUp([IndexAsInteger,]KeycodeAsInteger,ShiftAsInteger)其中,Object:一個對象名稱。Index:用來惟一地標識一個在控件數(shù)組中的控件。Keycode:是一個鍵代碼,該參數(shù)既可以是一個整數(shù)值代碼,也可以是VisualBasic常數(shù)。KeyDown、KeyUp事件(續(xù))【例5.5】當按下字母鍵時,窗體中顯示該字符并且不斷移動,直到松開該鍵。

KeyPress事件KeyPress事件過程的語法格式為:PrivateSubObject_KeyPress([IndexAsInteger,]KeyAsciiAsInteger)其中,Object:一個對象名稱。Index:用來惟一地標識一個在控件數(shù)組中的控件。KeyAscii:返回一個按鍵對應的ASCII碼整數(shù)值。KeyPress事件(續(xù))【例5.6】有一個TextBox控件,在文本框中輸入的字母以大寫顯示。5.4焦點事件點是控件接受用戶鍵盤輸入的當前狀態(tài)。假設窗體中有兩個以上控件,任何時候只能有一個控件可接受輸入。能夠接受輸入的控件成為焦點。

GotFocus事件G

溫馨提示

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

評論

0/150

提交評論