版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10菜單及對(duì)話框菜單及對(duì)話框都是Windows應(yīng)用程序的常用部件。應(yīng)用程序通過(guò)菜單為用戶提供一組命令。對(duì)話框是應(yīng)用程序與用戶交互的主要途徑。
第10章
菜單及對(duì)話框菜單設(shè)計(jì)鍵盤(pán)與鼠標(biāo)事件對(duì)話框通用/自定義本章主要內(nèi)容退出
窗體和大多數(shù)控件都能響應(yīng)鍵盤(pán)和鼠標(biāo)事件
10.1.1鍵盤(pán)事件
有三種事件處理鍵盤(pán)操作
1.KeyPress事件
2.KeyDown事件:用戶按下鍵盤(pán)上某個(gè)鍵時(shí)觸發(fā)此事件
3.KeyUp事件:用戶按下鍵盤(pán)上某個(gè)鍵后釋放時(shí)觸發(fā)此事件
10.1
鍵盤(pán)與鼠標(biāo)事件
Click、DblClick、MouseMove、MouseDown和MouseUp事件當(dāng)移動(dòng)鼠標(biāo)時(shí)發(fā)生MouseMove事件當(dāng)按下鼠標(biāo)任意鍵時(shí)發(fā)生MouseDown事件,放開(kāi)鼠標(biāo)鍵時(shí)發(fā)生MouseUp事件后三種事件可以區(qū)分鼠標(biāo)的左、右、中鍵與Shift、Ctrl、Alt鍵
PrivateSub對(duì)象名_鼠標(biāo)事件(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
說(shuō)明:(1)Button參數(shù)表示哪個(gè)鼠標(biāo)鍵被按下或釋放。用0,1,2位分別表示鼠標(biāo)的左、右、中鍵,用1或0表示被按下或釋放
(2)Shift參數(shù)表示當(dāng)鼠標(biāo)鍵被按下或釋放時(shí),Shift、Ctrl、Alt鍵的按下或釋放狀態(tài)。用0、1、2位表示Shift、Ctrl、Alt鍵
(3)X,Y表示鼠標(biāo)指針的當(dāng)前坐標(biāo)位置
210位
······左鍵右鍵中鍵
10.1.2
鼠標(biāo)事件MouseMove、MouseDown或MouseUp當(dāng)單擊鼠標(biāo)左鍵時(shí)把按鈕的位置移動(dòng)到鼠標(biāo)指針的位置,單擊鼠標(biāo)右鍵時(shí)把按鈕的位置移動(dòng)到窗體的左上角位置(即坐標(biāo)原點(diǎn))。以下程序?qū)ouseDown事件與Move方法結(jié)合起來(lái)使用。
PrivateSubForm_MouseDown(ButtonAsInteger,_ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1Then'單擊鼠標(biāo)左鍵時(shí)
Command1.MoveX,Y'移動(dòng)到鼠標(biāo)指針的位置
ElseCommand1.Move0,0'移動(dòng)到窗體的左上角
EndIfEndSub例10.1移動(dòng)命令按鈕的位置例10.1
10.1.3拖放操作
“拖放”(DragDrop)就是使用鼠標(biāo)將對(duì)象從一個(gè)地方拖動(dòng)到另一個(gè)地方再放下控件拖放是指運(yùn)行時(shí)將控件拖放到新的位置它可以分解為兩種操作:一個(gè)是發(fā)生在源對(duì)象的“拖”操作,另一個(gè)是發(fā)生在目標(biāo)對(duì)象上的“放”操作
1.屬性
(1)DragMode屬性:用于設(shè)置拖放方式
1為自動(dòng)方式;0(默認(rèn))為手動(dòng)方式,通過(guò)代碼來(lái)設(shè)定拖放操作何時(shí)開(kāi)始和結(jié)束
(2)DragIcon屬性:設(shè)置拖放操作時(shí)顯示的圖標(biāo),默認(rèn)情況下是將源對(duì)象的灰色輪廓作為拖動(dòng)圖標(biāo)
2.事件
(1)DragDrop事件:當(dāng)一個(gè)完整的拖放動(dòng)作完成時(shí)觸發(fā)。它可用來(lái)控制在拖放操作完成時(shí)要進(jìn)行的處理。其事件過(guò)程格式:
PrivateSub對(duì)象名_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source表示正在被拖動(dòng)的對(duì)象,X、Y表示鼠標(biāo)指針在目標(biāo)對(duì)象中的坐標(biāo)。
(2)DragOver事件:當(dāng)源對(duì)象被拖動(dòng)到目標(biāo)對(duì)象上,在目標(biāo)對(duì)象上就會(huì)觸發(fā)DragOver事件。本事件先于DragDrop事件。其事件過(guò)程格式:
PrivateSub對(duì)象名_DragOver(SourceAsControl,XAsSingle,_YAsSingle,StateAsInteger)
State參數(shù):0表示進(jìn)入,即源對(duì)象正進(jìn)入目標(biāo)對(duì)象內(nèi);
1表示離開(kāi),即源對(duì)象正在離開(kāi)目標(biāo)對(duì)象;
2表示跨越,即源對(duì)象在目標(biāo)范圍內(nèi)移動(dòng)位置
3.方法常用的有Drag方法。Drag方法的語(yǔ)法格式:
對(duì)象名.Drag[動(dòng)作]“動(dòng)作”取值為0時(shí),表示取消拖動(dòng)操作;取值為1時(shí),啟動(dòng)拖動(dòng)操作;取值為2時(shí),結(jié)束拖動(dòng)操作
例10.2
采用自動(dòng)方式,實(shí)現(xiàn)文本框的拖動(dòng)操作
在窗體上建立一個(gè)文本框Text1,其DragMode屬性值設(shè)置為1(自動(dòng)方式),程序代碼:
PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source.MoveX,Y′移動(dòng)對(duì)象位置
EndSub在窗體上建立一個(gè)文本框Text1,其DragMode屬性值設(shè)置為0(手動(dòng)方式),程序代碼:
PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source.MoveX,Y′移動(dòng)對(duì)象位置
EndSubPrivateSubText1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Text1.Drag1′啟動(dòng)“拖動(dòng)”操作
EndSubPrivateSubText1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Text1.Drag2′結(jié)束“拖動(dòng)”操作
EndSub例10.3
采用手動(dòng)方式,實(shí)現(xiàn)文本框的拖動(dòng)操作例10.3
(1)在窗體上建立一個(gè)圖片框(Picture1)和一個(gè)文本框(Text1),文本框的Text屬性為空
(2)編寫(xiě)程序代碼程序運(yùn)行后,用戶在文本框內(nèi)輸入文本和用鼠標(biāo)選定(通過(guò)拖動(dòng))文本,然后按住鼠標(biāo)左鍵后把文本框拖放到圖片框內(nèi),即可把已選定的文本顯示在圖片框內(nèi)例10.4
把文本框中的選定文本,拖放到圖片框
內(nèi)顯示出來(lái)例10.4PrivateSubForm_Load()Text1.DragMode=0′置手動(dòng)方式EndSubPrivateSubPicture1_DragDrop(SourceAsControl,XAsSingle,YAsSingle)Picture1.CurrentX=X′以鼠標(biāo)位置為當(dāng)前顯示起始位置
Picture1.CurrentY=YPicture1.PrintText1.SelText′在圖片框中顯示文本框中的選定內(nèi)容
EndSubPrivateSubText1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1Then′Button為1時(shí),表示按下左鍵
Text1.DragMode=1′置自動(dòng)方式
EndIfEndSub程序代碼
10.2菜單設(shè)計(jì)
應(yīng)用程序通過(guò)菜單為用戶提供一組命令菜單一般分為兩種:下拉式菜單和彈出式菜單
10.2.1下拉式菜單
1.下拉式菜單的結(jié)構(gòu)下拉式菜單基本結(jié)構(gòu)包括:頂層菜單、菜單項(xiàng)和子菜單子菜單項(xiàng)子菜單提示符訪問(wèn)鍵快捷鍵分隔線復(fù)選標(biāo)記菜單項(xiàng)頂層菜單例10.1c
10.2.2
菜單編輯器
設(shè)計(jì)菜單的工具——菜單編輯器菜單編輯器分為上、下兩部分,上半部分用來(lái)設(shè)置屬性,下半部分是菜單顯示區(qū),用來(lái)顯示用戶輸入的菜單內(nèi)容。
10.2.3菜單的Click事件除分隔線以外的所有菜單元素都能識(shí)別Click事件例10.5
編一程序,進(jìn)行兩個(gè)操作數(shù)的算術(shù)運(yùn)算練習(xí)
設(shè)計(jì)步驟如下:
(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性菜單欄向用戶提供功能選擇,包括運(yùn)算數(shù)的位數(shù),運(yùn)算符類(lèi)型(加、減、乘)和退出程序菜單設(shè)計(jì)各個(gè)菜單項(xiàng)名稱(chēng)例10.5
(2)編寫(xiě)程序代碼
OptionExplicit‘規(guī)定所有變量都要顯式聲明,見(jiàn)10.9.1節(jié)
Dimsel1AsInteger,sel2AsStringDimr1AsLong
PrivateSubForm_Load()sel1=0'位數(shù)標(biāo)記
sel2=""'運(yùn)算標(biāo)記
Randomize
EndSubPrivateSubMnu11_Click()
‘單擊“一位數(shù)”菜單項(xiàng)
sel1=1'設(shè)置位數(shù)標(biāo)記
EndSubPrivateSubMnu12_Click()
‘單擊“二位數(shù)”菜單項(xiàng)
sel1=10
EndSubPrivateSubMnu13_Click()
‘單擊“三位數(shù)”菜單項(xiàng)
sel1=100EndSubPrivateSubMnu21_Click()
‘單擊“加法”菜單項(xiàng)
sel2="+"'設(shè)置運(yùn)算標(biāo)記EndSubPrivateSubMnu22_Click()
‘單擊“減法”菜單項(xiàng)
sel2="-"EndSubPrivateSubMnu23_Click()
‘單擊“乘法”菜單項(xiàng)
sel2="*"EndSubPrivateSubCommand1_Click()
'"命題"DimaAsLong,bAsLongIfsel1=0Orsel2=""Then
MsgBox"先選擇運(yùn)算數(shù)的位數(shù)和運(yùn)算類(lèi)型"ExitSubEndIfa=sel1+Int(9*sel1*Rnd)‘根據(jù)指定位數(shù),隨機(jī)生成操作數(shù)
b=sel1+Int(9*sel1*Rnd)Text1.Text=Str(a)+sel2+Str(b)+“=”‘根據(jù)操作數(shù)及運(yùn)算類(lèi)型組成算式
SelectCasesel2‘根據(jù)運(yùn)算類(lèi)型,求運(yùn)算結(jié)果r1Case"+"r1=a+bCase"-"r1=a-bCase"*"r1=a*bEndSelectText2.Text=""Text2.SetFocusEndSub菜單操作后Sel1指定位數(shù)
=1
一位數(shù)
=10
二位數(shù)
=100
三位數(shù)Sel2指定運(yùn)算類(lèi)型
=“+”加法
=“-”減法
=“*”乘法PrivateSubCommand2_Click()
'"答題"按鈕單擊事件
Dimr2AsLongIfText2.Text=""Then
MsgBox"請(qǐng)輸入答案"ExitSubEndIfr2=Val(Text2.Text)'讀取用戶的答案
Ifr1=r2Then'判斷答案
MsgBox"正確"Else
MsgBox"錯(cuò)誤"EndIfEndSubPrivateSubMnu30_Click()‘“退出”菜單命令
EndEndSub
10.2.5
彈出式菜單
彈出式菜單又稱(chēng)為快捷菜單。可以根據(jù)右擊鼠標(biāo)時(shí)的位置彈出不同的菜單。使用VB提供的菜單編輯器,把某個(gè)菜單設(shè)置成隱藏。創(chuàng)建快捷菜單的步驟如下:
(1)使用菜單編輯器設(shè)計(jì)菜單
(2)設(shè)置頂層菜單項(xiàng)為不可見(jiàn),即不選中菜單編輯器里的“可見(jiàn)”選項(xiàng)或在屬性窗口中設(shè)定Visible屬性為False(3)編寫(xiě)與彈出式菜單相關(guān)聯(lián)的MouseUp(釋放鼠標(biāo))事件過(guò)程。格式為:
[對(duì)象]PopupMenu
菜單名[,位置常數(shù)][,橫坐標(biāo)[,縱坐標(biāo)]]]例10.6在例10.5的基礎(chǔ)上,把“位數(shù)”菜單改為快捷菜單
(1)打開(kāi)例10.5的應(yīng)用程序,選定窗體,然后在菜單編輯器中將“位數(shù)”菜單標(biāo)題的“可見(jiàn)”
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 程序員技能提升考核含答案
- 設(shè)備安全工程師崗位知識(shí)考核題庫(kù)含答案
- 部門(mén)督導(dǎo)精英面試題及答題攻略
- 考試題解析中廣核熱工水力專(zhuān)業(yè)知識(shí)
- 2025年城鄉(xiāng)共享單車(chē)運(yùn)營(yíng)項(xiàng)目可行性研究報(bào)告
- 2025年旅游產(chǎn)業(yè)鏈整合與創(chuàng)新可行性研究報(bào)告
- 2025年新型城鎮(zhèn)化建設(shè)及規(guī)劃可行性研究報(bào)告
- 2025年生態(tài)恢復(fù)項(xiàng)目可行性研究報(bào)告
- 2026年上海政法學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及答案詳解一套
- 2026年甘肅省蘭州市單招職業(yè)適應(yīng)性考試題庫(kù)及完整答案詳解1套
- 2025山東日照五蓮縣城市社區(qū)專(zhuān)職工作者招聘8人考試題庫(kù)必考題
- 2025年大學(xué)醫(yī)學(xué)影像(影像診斷學(xué))試題及答案
- 部隊(duì)手榴彈使用課件
- 私募基金內(nèi)部人員交易管理制度模版
- 針對(duì)低層次學(xué)生的高考英語(yǔ)復(fù)習(xí)提分有效策略 高三英語(yǔ)復(fù)習(xí)備考講座
- (完整)《走遍德國(guó)》配套練習(xí)答案
- 考研準(zhǔn)考證模板word
- 周練習(xí)15- 牛津譯林版八年級(jí)英語(yǔ)上冊(cè)
- 電力電纜基礎(chǔ)知識(shí)課件
- 代理記賬申請(qǐng)表
- 模型五:數(shù)列中的存在、恒成立問(wèn)題(解析版)
評(píng)論
0/150
提交評(píng)論