VisualBasic程序的界面設計_第1頁
VisualBasic程序的界面設計_第2頁
VisualBasic程序的界面設計_第3頁
VisualBasic程序的界面設計_第4頁
VisualBasic程序的界面設計_第5頁
已閱讀5頁,還剩140頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章VisualBasic程序的

界面設計本章的學習重點和難點對象的功能和使用場合對象的主要屬性、方法和事件

合理選用對象和窗體布局

常用控件PictureBox圖片框TextBox文本框CommandButton命令按鈕OptionButton選項按鈕ListBox列表框Vscroll垂直滾動條Label標簽Frame框架CheckBox復選框ComboBox組合框Hscroll水平滾動條Timer計時器Shape形狀Line線條Image圖像框3.1公共屬性定制窗體(或其他對象)屬性的方法

在設計態(tài)通過屬性窗口為其設定各種屬性值必須先選中對象,后設置屬性;在屬性窗口列出的屬性中大多可采用系統(tǒng)缺省值

在程序代碼中改變屬性值[對象名.]屬性名=屬性值 當程序運行,執(zhí)行完以上代碼行時,會將等號左邊對象的相應屬性值設置或更改為等號右邊的屬性值3.1公共屬性Name名稱屬性標識引用對象的作用(所有對象都具有的屬性)每個對象在創(chuàng)建時,VB就自動為它創(chuàng)建一個默認名稱(對象類名后跟編號,編號從1開始,依次順延)

;自行命名對象的命名規(guī)則:必須以一個字母或漢字開頭,可包含字母、數(shù)字、漢字和下劃線,但不能包含空格和西文標點符號,長度不得超過40個字符在同一窗體中,控件對象的名稱屬性值是唯一的、不能同名,在同一工程中,窗體對象也不能同名設計態(tài)時,通過屬性窗口設置Name屬性;在程序運行時,它是只讀的,不能改變3.1公共屬性Caption標題屬性該屬性是對象上或標題欄上顯示的內容,往往在外觀上起到提示和標志的作用在設計態(tài)和程序運行時,均可修改該屬性值注意它與Name屬性的區(qū)別NameCaption3.1公共屬性Enabled活動屬性

決定對象是否響應用戶或系統(tǒng)事件缺省值為“True”,表示可以響應用戶或系統(tǒng)的事件;當設置為“False”,表示禁止該對象響應事件,往往在程序運行時控件對象呈暗淡色除了幾何圖形、直線控件外,所有對象均有Enabled屬性Enabled屬性為True

Enabled屬性為False3.1公共屬性Height、Width、Top和Left大小、位置屬性

Height、Width屬性分別決定對象大小的高度和寬度Top表示對象到直接容器上邊框的距離,Left表示對象到直接容器左邊框的距離單位特維:1twip=1/20點=1/1440英寸=1/567厘米在默認坐標系統(tǒng),把該對象所在的直接容器的左上角頂點作為坐標原點,該對象的Left和Top屬性值則是該對象左上角頂點相對于坐標原點的X、Y坐標示意圖

TopHeightLeftWidth對象大小、位置屬性示意圖(0,0)3.1公共屬性Visible可視屬性決定對象在程序運行時是否可見缺省值為“True”表示可見,“False”表示對象存在,但對象隱藏、不可見Font系列字體屬性FontName字體類型FontSize字體大小FontBold粗體FontItalic斜體FontStrikethru加刪除線FontUnderLine加下劃線[例題3-1]例題3-1在窗體上建立一個標簽,名稱為Label1,運行時單擊窗體界面如圖所示

PrivateSubForm_Click()Label1.Caption="歡迎您使用VB!"Label1.FontName="隸書"Label1.FontSize=24Label1.FontBold=TrueLabel1.FontItalic=TrueLabel1.FontStrikethru=TrueLabel1.FontUnderline=TrueEndSub實例演示3.1公共屬性Font系列字體屬性對于不同的對象可以分別設置不同F(xiàn)ont屬性,若要為窗體中所有控件對象設置相同F(xiàn)ont屬性,可以先對窗體設置Font屬性,而后再創(chuàng)建的控件對象在缺省情況下都自動采用窗體的Font屬性值,除非用戶再自行設置3.1公共屬性ForeColor、BackColor、BackStyle屬性設置對象上顯示文本或圖形的前景顏色和背景顏色ForeColor前景顏色;BackColor背景顏色;其值是一個16進制的常數(shù);通常在編寫代碼時,常用Qbcolor或RGB函數(shù)為其設置顏色BackStyle屬性用于設置背景風格。屬性值為0時,表示該對象透明顯示,即對象的背景顏色BackColor不起作用;屬性值為1時,表示對象不透明顯示,即此時為對象設置背景色才有效3.1公共屬性BorderStyle屬性設置對象的邊框風格屬性值為0時,表示對象周圍無邊框;為1時,表示對象有單線邊框該屬性對于某些不同對象而言,還有其他不同的取值和意義3.1公共屬性MousePointer、MouseIcon屬性MousePointer設置在運行時鼠標移動到對象上時顯示的鼠標指針類型MousePointer取值在0~15之間,僅當取值為99時表示用戶自定義圖標MouseIcon屬性起作用,即可用MouseIcon設置自定義的鼠標圖標,類型為.ico或.cur常用的圖片在Graphics目錄下3.1公共屬性ToolTipText提示屬性設置在運行時鼠標暫停在控件上時顯示的文本信息,往往起到提示作用Alignment對齊屬性設置選項按鈕、復選框或控件文本的對齊方式缺省值為0,表示左對齊;若為1,表示右對齊;若為2,表示居中對齊[例題3-2]例題3-2在例題3-1的基礎上,再添加一個標簽,通過屬性設置,產生如下文字疊影效果,當鼠標移動到標簽位置處,鼠標指針形狀從默認的箭頭變成手形,當鼠標暫停在標簽位置處,會出現(xiàn)如圖所示的文字提示信息實例演示3.1公共屬性AutoSize、WordWrap屬性AutoSize屬性決定控件是否能夠自動調整大小以顯示控件上的整個內容WordWrap屬性值為True,表示控件能按照文本和字體大小在垂直方向上改變顯示區(qū)域的大小,在水平方向上不發(fā)生變化;值為False,表示控件能在水平方向上按正文的長度放大或縮小,在垂直方向上以字體大小來放大或縮小顯示區(qū)域僅當AutoSize屬性為True時,WordWrap屬性才有效實例演示3.1公共屬性TabIndex、TabStop屬性TabIndex屬性決定了按Tab鍵時,對象在其父窗體中得到焦點的順序“焦點”代表接收用戶鼠標或鍵盤輸入的能力。獲得焦點稱為聚焦,當對象獲得焦點時,才可接收用戶的輸入。在Windows界面下,任何時刻可運行多個應用程序,但只有一個包含“聚焦”窗口的應用程序才是當前活動程序;同樣在一個有多個文本框所構成的窗口中,只有具有焦點的那個文本框才能接收用戶的輸入若要改變Tab順序,即對象在其父窗體中得到焦點的順序,可以直接修改對象的TabIndex屬性的值3.1公共屬性TabIndex、TabStop屬性系統(tǒng)會根據(jù)控件創(chuàng)建的次序為大部分控件(除Menu、Timer、Data、Image、Line和Shape等)分配一個Tab順序,并將此次序號保存在TabIndex屬性中。在缺省情況下,第一個創(chuàng)建的控件TabIndex屬性值為0,第二個為1,依次類推。在程序運行時,按Tab鍵就按照TabIndex屬性值中的遞增次序在各個控件上循環(huán)移動焦點運行時,對于不可見或被禁用的控件以及某些不能接收焦點的控件(如Frame和Label等控件)仍保持在Tab鍵次序中,但利用Tab鍵切換時會自動跳過這些控件。而對于那些原本可以接收焦點的對象,則可以通過設置TabStop屬性值為False,達到此效果小結不同類的對象可以有一些相同的屬性,但是有些屬性并非所有對象都有,可能是該對象特有的屬性的設置可以在設計時通過屬性窗口設置,也可通過代碼窗口在編程時設置屬性窗口并未列出該對象的所有屬性,只列出設計態(tài)屬性,而有一些是只能在程序代碼中使用的運行態(tài)屬性,當然也有一部分屬性在運行時是只讀的

3.2窗體窗體是VB最重要的對象,它用于創(chuàng)建VB應用程序的用戶界面或對話框,是包容用戶界面或對話框所需的各種控件對象的容器在創(chuàng)建新工程時,VB會在窗體設計器中自動新建一個空白的窗體,要求以它為起點創(chuàng)建程序一個應用程序通常包含多個窗體,其中應有一個窗體作為程序的啟動窗體,也就是運行程序時首先出現(xiàn)的窗體。系統(tǒng)默認第一個窗體,即屬性Name為Form1的窗體為啟動(起始)窗體。用戶也可使用工程菜單→工程屬性,自定義設置起始窗體3.2窗體3.2.1窗體的主要屬性Name:窗體名稱系統(tǒng)為應用程序的第一個窗體缺省命名為Form1,在程序代碼中通過引用窗體名稱以識別和訪問不同的對象Caption:窗體標題窗體標題是出現(xiàn)在窗體標題欄的文本內容。缺省使用窗體名的缺省值Picture:用于設置窗體中顯示的圖片F(xiàn)orm1.Picture=

LoadPicture("D:\Graphics\BEANY.bmp")Form2.Picture=Form1.Picture3.2窗體3.2.1窗體的主要屬性ControlBox和IconControlBox屬性值取True或False,表示窗體左上角是否有控制菜單框僅當ControlBox屬性值取True,Icon屬性設置才有效,可為窗體最小化自定義一個顯示圖標當ControlBox屬性值取False,則無控制菜單框,這時,系統(tǒng)將MaxButton和MinButton屬性自動設置為FalseBorderStyle:窗體邊框風格該屬性對于窗體對象在運行是只讀。當BorderStyle設置為除2以外的值時,系統(tǒng)將MaxButton和MinButton屬性設置為False。常常利用對該屬性的設置,來設計不同的窗體形式

3.2窗體BorderStyle設定值常量風格0VbBSNone窗口無外框,無法移動及改變大小1VbFixedSingle單線外框,運行時可移動、但大小不可改變2VbSizable(缺省值)雙線外框,運行時可移動并可改變大小3VbFixedDouble雙線外框,運行時窗口為固定對話框、大小不可改變4VbFixedToolWindow包含一個關閉按鈕,標題欄字體縮小,窗口大小不可改變,在Windows95任務欄中不會顯示,外觀與工具條相似5VbSizableToolWindow包含一個關閉按鈕,標題欄字體縮小,窗口大小能改變,在Windows95任務欄中不會顯示,外觀與工具條相似3.2窗體3.2.1窗體的主要屬性WindowsState:設置窗體執(zhí)行時的顯示狀態(tài)WindowsState屬性取值為0表示有窗口邊界的正常窗口狀態(tài),1表示以圖標方式顯示的最小化狀態(tài),2表示無邊框充滿整個屏幕的最大化狀態(tài)

3.2窗體3.2.2窗體的主要方法Print:打印方法(用于將文本輸出到對象上)調用格式:[對象名.]Print[輸出項列表][{;|,}]對象除了可以是窗體外,還可以是圖片框(PictureBox)、Debug或打印機(Printer),若缺省對象名,表示將文本輸出到當前窗體上輸出項列表:是由0個、1個或多個待輸出的數(shù)值表達式或字符串表達式構成;當輸出項是由多個項構成,則中間必須用逗號或分號分隔;若Print后什么都不跟,則表示輸出一個空行Form1.Print1,2,3

Print1,2,3

Picture1.Print1,2,3Form1.Print

Print

Picture1.Print3.2.2窗體的主要方法Print:打印方法[例題3-3]調用格式:[對象名.]Print[輸出項列表][{;|,}];(分號)和,(逗號)分隔符:用于分隔前后兩個輸出項,并指定分隔符后的下一個輸出項的輸出位置分號(;)表示下一個輸出項將以緊湊格式,緊跟著上一個輸出項輸出,中間沒有空格逗號(,)表示采用標準格式,下一個輸出項將在下一個打印區(qū)(每隔14列開始一個打印區(qū),每列的寬度是所有字符的平均寬度)的起始位置輸出Print1,2,3

Print“We”;“study”;“VB”3.2窗體

標準格式

緊縮格式Print1,2,3

Print"We","study","VB5.0"運行結果

1 -2 3

We study VB標準格式Print各數(shù)據(jù)分別存儲在各自的標準輸出區(qū)內,數(shù)據(jù)之間留有一定的空格字符,數(shù)據(jù)劃分非常明顯(讀取數(shù)據(jù)容易)對于一個數(shù)值型數(shù)據(jù),前面有一個符號位(對于正號,不顯示但留有一個空格),數(shù)據(jù)后留有一個空格作為分隔符Print1;2;3

Print"We";"study";"VB5.0"運行結果

1-23

WestudyVB緊縮格式Print各數(shù)據(jù)緊湊地顯示,節(jié)省空間對于一個數(shù)值型數(shù)據(jù),前面有一個符號位(對于正號,不顯示但留有一個空格),數(shù)據(jù)后留有一個空格作為分隔符對于字符串數(shù)據(jù),輸出的各字符串數(shù)據(jù)間沒有空格而連成一片,造成讀取數(shù)據(jù)的困難例題3-3用Print方法的標準和緊湊格式輸出數(shù)據(jù),請寫出程序運行結果PrivateSubForm_Click()Print"標準格式"Print"數(shù)值",123,Print"字符","VB"PrintPrint"緊縮格式"Print"數(shù)值";123;Print"字符";"VB"PrintPrint"標準和緊縮格式混合使用"Print"數(shù)值";123,"字符";"VB"EndSub3.2.2窗體的主要方法Print:打印方法[例題3-4]調用格式:[對象名.]Print[輸出項列表][{;|,}]調用Print方法打印輸出的位置是由對象的繪圖坐標CurrentX和CurrentY屬性決定的,默認為對象的左上角(0,0)定位輸出函數(shù):Spc(n):可選的。在顯示或打印列表中的下一個輸出項前插入n個空格,從而實現(xiàn)對輸出進行定位Tab(n):可選的。用來將輸出定位在絕對n列號上,使用無參數(shù)的Tab()表示將輸出定位在下一個打印區(qū)的起始位置3.2窗體例題3-4用Print方法和定位函數(shù)輸出數(shù)據(jù)Spc(n):下一個輸出項前插入n個空格Tab(n):輸出定位在絕對n列號上PrivateSubForm_Click()PrintTab(8);"A"PrintTab(6);"B";Spc(2);"B"PrintSpc(3);"C";Spc(2);"C";Spc(2);"C"PrintTab(2);"D";Spc(2);"D";Spc(2);"D";Spc(2);"D"EndSub3.2窗體3.2.2窗體的主要方法Cls:清屏方法調用格式:[對象名.]Cls清除運行時在對象中用Print和圖形方法創(chuàng)建的文本和圖形,同時將繪圖坐標CurrentX和CurrentY屬性恢復到原點(0,0)對象可以是窗體或圖片框,對象名缺省時,表示清除當前窗體Form1.Cls

Cls

Picture1.Cls3.2窗體3.2.2窗體的主要方法Show和Hide:分別用于顯示和隱藏窗體

調用格式:[窗體名.]Show[Style]

[窗體名.]Hide

窗體名缺省,表示顯示或隱藏當前窗體Show方法的Style參數(shù)決定窗體是有模式的(vbModel)還是無模式的(vbModeless)。有模式的窗體不允許用戶同時與應用程序的其他窗體交互,無模式窗體則允許,Style缺省值是無模式的

Form1.ShowForm1.Hide

ShowHide3.2窗體3.2.2窗體的主要方法SetFocus:設置焦點Move:移動方法(除時鐘和菜單外)[對象名.]Move左邊距離[,上邊距離[,寬度[,高度]]]如果對象是窗體,則“左邊距離”和“上邊距離”以屏幕左邊界和上邊界為準,否則以窗體的左邊界和上邊界為準,給出寬度和高度表示可以改變大小PrintForm:打印窗體方法Refresh:刷新方法

3.2窗體3.2.2窗體的主要事件

Click(單擊)事件:當用戶單擊窗體時觸發(fā)本事件DblClick(雙擊)事件:當用戶雙擊窗體時觸發(fā)本事件。“雙擊”實際上觸發(fā)兩個事件,第一次按鼠標按鈕時產生Click單擊事件,第二次按鼠標按鈕時產生DblClick事件Initialize(初始化)事件:在窗體被加載(Load)之前,窗體被配置的時候觸發(fā)Load(裝載)事件:VB把窗體從磁盤或從磁盤緩沖區(qū)讀入內存時觸發(fā)本事件。Load事件往往用于在啟動程序時對屬性和變量進行初始化Resize事件:在窗體被改變大小時,會觸發(fā)本事件3.2窗體3.2.2窗體的主要事件Paint(繪畫)事件:當窗體被移動或放大時,或者窗體移動時覆蓋了一個窗體時,觸發(fā)本事件Activate(激活)事件:當窗體變?yōu)榧せ畹漠斍按翱跁r,引發(fā)本事件Deactivate(失去激活)事件:當窗體失去激活狀態(tài),即另一個窗體成為當前窗口時,引發(fā)本事件GotFocus事件:在窗體成為當前焦點時觸發(fā)本事件LostFocus事件:在窗體失去當前焦點時觸發(fā)本事件QueryUnload、Unload(卸載)事件:當關閉窗體時,依次觸發(fā)卸載事件,將窗體從內存中卸載。當窗體被卸載后又重新裝入,則窗體中所有控件都將重新初始化3.2窗體3.2.2窗體的主要事件

學習對象的事件,主要是了解事件什么時機被觸發(fā),從而有助于選擇在哪一個事件過程中編寫代碼了解和掌握窗體的事件觸發(fā)時機和次序[例題3-5]例題3-5實例演示在運行一個VB應用程序時,先發(fā)生啟動窗體的Initialize事件,緊跟著是Load事件,將窗體裝入內存之后,窗體被激活時,Activate事件發(fā)生。這三個事件是在一瞬間就完成的對于窗體的Initialize和Load事件都是發(fā)生在窗體被顯示之前,所以經常在事件過程中放置一些命令語句來初始化應用程序,但所用命令語句是有限的,例如:“對象名.SetFocus”一類的語句就不能使用,而Print語句僅當Form的AutoReDraw屬性值為真時,在Load事件中才有效

例題3-5對于GotFocus事件,分兩種不同情況:如果窗體上沒有能聚焦的控件,那么該窗體在Activate事件發(fā)生之后立即觸發(fā)GotFocus事件如果窗體上有能聚焦的控件,那么該控件的GotFocus事件發(fā)生,而不是窗體有時應用程序有多個窗體構成時,當Form1由當前窗體變成非當前窗體時,若窗體是焦點,會先引發(fā)LostFocus事件,后引發(fā)Deactivate事件。當該窗體再次成為當前窗體時,只要該窗體加載完畢后,沒有被卸載,就不會觸發(fā)Load事件,但會觸發(fā)Activate事件例題3-5VB程序在執(zhí)行時會自動裝載啟動窗體,在使用Show方法顯示窗體時,也會自動將尚未載入內存的窗體裝入內存,并引發(fā)窗體的Load事件。若想將窗體(或其他對象)載入內存,但并不顯示它,則可以使用裝載語句裝載語句的格式:Load對象名VB程序在調用Hide方法,僅僅是將窗體暫時隱藏,這不同于卸載。卸載將使該對象的所有屬性重新恢復為設計態(tài)時設定的初始值;卸載還將引發(fā)對象的卸載事件。如果卸載的對象是程序唯一的窗體,則將終止程序的運行??梢允褂眯遁d語句把窗體(或其他對象)從內存卸載卸載語句的格式:Unload對象名對象名可以是Me,表示當前窗體例題3-5在Windows下,用戶可通過使用菜單中的“關閉”命令或單擊應用程序窗口上的“關閉”按鈕來關閉窗口,并結束程序的運行。由程序來控制其結束,而不是由用戶的操作來控制時,在程序代碼中可使用End語句End執(zhí)行該語句將終止應用程序的執(zhí)行,并從內存卸載所有窗體3.3文本控件文本控件主要用于顯示文本信息標準控件標簽文本框3.3文本控件3.3.1標簽(Label)主要用于在窗體上增加文字說明標簽控件在程序運行時不具有交互性,即標簽內容只能通過Caption屬性來設置或修改,不能由用戶在程序運行時直接編輯主要屬性Name(名稱)、Caption(標題屬性即為標簽所顯示的文本內容)、Alignment(對齊屬性)、AutoSize(大小自適應屬性)、BackStyle(背景風格屬性)等方法:Refresh(刷新)、Move(移動)事件:Click(單擊)、DblClick(雙擊)等3.3文本控件3.3.2文本框(TextBox)主要用于接收用戶在框內輸入以及編輯、修改的信息,或顯示由程序提供的信息在程序運行中,具有良好的交互性

主要屬性主要方法主要事件3.3.2文本框(TextBox)主要屬性Name(名稱):文本框名稱Text(文本):文本框不具有Caption屬性,用戶從文本框輸入和編輯、修改的文本內容就保存在Text屬性中,常常通過獲取該屬性值來獲取用戶輸入或編輯的數(shù)據(jù)。Text屬性的文本內容最多為2048個字符,除非MultiLine屬性True,則可輸入多達32KB的文本。Locked:決定文本框是否可以被編輯修改,若取值為True,表示此時文本框中的內容是只讀的、不具有交互性,類似于標簽,經常用于創(chuàng)建只讀文本框3.3.2文本框(TextBox)主要屬性MaxLength(最大長度):缺省值是0,表示文本框可接受任意個數(shù)的字符,否則,文本框只接受MaxLength屬性設定的字數(shù)。在VB中字符的長度以字為單位,即一個西文字符與一個漢字都是一個字,長度為1PasswordChar(口令):缺省值為空,表示正常顯示輸入的字符;如該屬性的值為某個字符(*),則表示本文本框用于輸入口令,用戶輸入的內容仍保存在Text屬性中,但輸入的每個字符將被代換為PasswordChar屬性設定的字符顯示在文本框中。PasswordChar和MaxLength屬性配合,常用于創(chuàng)建口令(密碼)文本框

3.3.2文本框(TextBox)主要屬性MultiLine(多行):屬性值為“True”(真),則可輸入和顯示多行文本;若為“False”(假),則只能輸入一行文本。該屬性不能在程序中改變,當本屬性為“True”時,PasswordChar屬性設置則無效ScrollBars(滾動條):缺省值為“0”(無滾動條);若該屬性設置為“1”,表示有水平滾動條;若為“2”,表示有垂直滾動條;若為“3”,表示水平與垂直滾動條兩者都有。本屬性只有在MultiLine屬性為“True”時才有效3.3.2文本框(TextBox)主要屬性SelStart、SelLength和SelText屬性:在程序運行中,用于控制文本框中的插入點和文本選定操作SelStart屬性決定選定文本的開始位置,第一個字符位置是0SelLength屬性決定選定文本的長度SelText屬性設定或存放由前兩個屬性選定的文本內容Text1.SelStart=1

Text1.SelLength=3

Text2.Text=Text1.SelText3.3.2文本框(TextBox)主要方法SetFocus:設置焦點,本方法可使指定的文本框(或其他有聚焦能力的對象)成為焦點,也就是當前文本框,成為焦點的文本框中具有閃動的光標Refresh:刷新3.3.2文本框(TextBox)主要事件KeyPress:當用戶按下或松開鍵盤上某個按鍵時,發(fā)生本事件Change:當文本框的Text屬性,即文本的內容發(fā)生變化時,就引發(fā)本事件LostFocus:當文本框失去焦點時,引發(fā)本事件一般經常用以上三個事件過程中設置代碼,來實現(xiàn)對輸入文本框中的內容進行檢查、驗證和確認GotFocus:當文本框得到焦點時,引發(fā)本事件[例題3-6][例題3-7]例題3-6程序運行時,通過用戶輸入,同步設置窗體的標題,即用戶輸入什么,窗體標題就同步顯示什么分析:接收用戶輸入——文本框用戶輸入的內容保存在文本框的Text屬性中窗體的標題與文本框內容一致——賦值將文本框內容Text賦予窗體的標題屬性Caption同步顯示——文本框Change事件實例演示PrivateSubText1_Change()Form1.Caption=Text1.TextEndSub例題3-7一個簡單的登陸窗口,要求輸入學號(必須由6位數(shù)字字符構成)、口令(studyvb6),按回車鍵結束輸入,若學號、口令輸入正確,顯示正確登陸信息,并清空文本框,等待下一次登陸,否則,顯示不正確信息,并自動選定文本,等待用戶重新輸入分析:接收用戶輸入——文本框用戶輸入的內容保存在文本框的Text屬性中驗證輸入文本框中的內容是否正確——文本框KeyPress、LostFocus事件清空文本框——Text屬性設置為""自動選定文本——SelStart、SelLength和SelText屬性實例演示3.4命令按鈕(CommandButton)命令按鈕在VB應用程序中是使用最多的控件對象之一,用戶用鼠標單擊命令按鈕,用來啟動、中斷或結束某個任務,它是用戶和程序交互最簡單的方法。但具體產生的動作則由相應的單擊事件過程中的程序代碼決定主要屬性主要方法SetFocus:設置焦點。設置為焦點的按鈕在其表面有一個虛邊框

主要事件3.4命令按鈕(CommandButton)主要屬性Caption(標題):屬性值是顯示在按鈕上的文字"關閉"創(chuàng)建命令按鈕的訪問鍵快捷方式:&訪問鍵

運行時,同時按下Alt+訪問鍵,即可觸發(fā)命令按鈕的單擊事件"&Close"若不創(chuàng)建訪問鍵,但需要在標題中包含“&”連字符,則應設置連續(xù)的兩個連字符"Add&&Minus"3.4命令按鈕(CommandButton)主要屬性Default(確定):每個窗體可選擇一個命令按鈕作為默認的確認按鈕,即不管窗體上目前哪個控件對象具有焦點,只要用戶按“Enter”回車鍵,就等同于單擊該命令按鈕;指定該默認的確認按鈕,只需將其Default屬性值設為“True”(真)Cancel(取消):每個窗體可選擇一個命令按鈕作為默認的取消按鈕,只需將這個命令按鈕的Cancel屬性設為“True”,則不管目前窗體的哪個控件對象具有焦點,按“Esc”鍵即等同于單擊本按鈕Enabled(活動):決定按鈕是否響應用戶或系統(tǒng)事件實例演示3.4命令按鈕(CommandButton)主要屬性Style(風格):缺省值為“0”,表明按鈕的風格為標準格式,即按鈕表面顯示Caption屬性設置的文本;若設為“1”,則為圖形風格,按鈕上顯示圖形Picture(圖片):設置按鈕上顯示的圖形(.bmp或.ico)復選框和選項按鈕控件也具有這兩個屬性DisabledPicture與DownPicture:分別用于設置按鈕無效時與按鈕處于按下狀態(tài)時顯示的圖形Value:在運行態(tài),若將命令按鈕的Value屬性值由默認的False設置為True,則會觸發(fā)命令按鈕的單擊事件3.4命令按鈕(CommandButton)主要事件:最基本最重要的鼠標單擊事件Click在實際編程時,常常利用命令按鈕的單擊事件,編寫一些代碼完成所需的具體操作,例如:計算、清除、關閉等在程序運行時觸發(fā)命令按鈕單擊事件的情況用鼠標單擊按鈕按Tab鍵或調用SetFocus方法,將焦點轉移到按鈕上,然后按空格鍵或Enter回車鍵使用按鈕的訪問鍵(Alt+訪問鍵)命令按鈕的Default屬性為True的情況下按Enter回車鍵;命令按鈕的Cancel屬性為True的情況下按Esc鍵用代碼設置命令按鈕的Value屬性為True例題3-8建立一個允許輸入、剪切、復制和粘貼的文本編輯程序分析:選中文本內容(SelText<>""),才能進行剪切和復制——Enabled剪貼板中的內容可以被反復粘貼圖片按鈕——Style、Picture按鈕的Click事件過程的編寫實例演示3.5選擇控件能直接提供輸入選項,方便用戶選擇錄入標準控件選項按鈕、復選框列表框、組合框3.5選擇控件3.5.1選項按鈕(OptionButton)、復選框(CheckBox)與框架(Frame)選項按鈕和復選框——顯示選項,供用戶從中選擇選項按鈕通常成組出現(xiàn),供用戶從中必須選擇其中之一且最多只能選取一項,即當用戶選中其中一個選項時,同組其他選項會自動失效,就象單選題復選框可以單個或多個成組出現(xiàn),用戶可以選定任意數(shù)目的選項,也可以什么都不選,選項間無任何關聯(lián),就象不定向選擇題框架經常用于將其他控件對象按功能組織成一個可標識的組,同時讓窗體界面更加整齊有序實例演示3.5選擇控件3.5.1選項按鈕(OptionButton)、復選框(CheckBox)與框架(Frame)主要屬性Caption:設置選項按鈕和復選框的文本注釋內容;決定框架的標題名稱,若為空,則形成封閉框架框Value:決定選項按鈕和復選框的選項按鈕的Value的取值為True和False,分別表示選中和未選中復選框的Value的取值有三種:0表示未選中,1表示選中,2變灰表示暫時不能訪問經常利用該屬性值的判斷和設置選中狀態(tài)實例演示3.5選擇控件3.5.1選項按鈕(OptionButton)、復選框(CheckBox)與框架(Frame)主要事件選項按鈕、復選框和框架都能接收Click事件單擊選項按鈕或復選框時,會自動改變其選中狀態(tài)選項按鈕或復選框的GotFocus事件[例題3-9]利用框架將控件分組時,應首先創(chuàng)建Frame控件,然后必須在Frame控件內部創(chuàng)建分組控件,否則無法真正實現(xiàn)功能分組在Frame控件內部創(chuàng)建的控件和框架是一個整體,將隨框架容器一起移動、顯示、消失和屏蔽

例題3-9編寫一個簡單的字體格式設置程序分析:需要哪些控件對象:選項按鈕、復選框、框架、標簽用戶的選擇改變標簽字體的變化——選項按鈕、復選框的Click事件編寫代碼如何了解用戶的選擇——判斷選項按鈕、復選框的Value屬性值PrivateSubCheck1_Click()'粗體復選框的單擊事件

IfCheck1.Value=1Then'若粗體復選框選中

Label1.FontBold=True'設置粗體

ElseIfCheck1.Value=0Then'若粗體復選框未選

Label1.FontBold=False'取消粗體

EndIfEndSub3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)列表框和組合框控件——通過列表的形式顯示多個項目,供用戶選擇,實現(xiàn)交互。當列表項目很多,無法全部顯示,會自動出現(xiàn)垂直滾動條,方便用戶瀏覽選擇。列表框僅能為用戶提供選擇的列表,不能由用戶直接輸入和修改其中的列表項內容組合框是文本框和列表框功能的組合控件,所以用戶可以通過在其文本框中輸入,來選擇列表項

實例演示3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要屬性List:用于保存和設置每一個列表項內容在程序中的訪問形式

列表框或組合框名.List(列表項序號)

列表項序號是為列表項進行的位置編號,從上至下依次為0、1、2…屬性窗口設置List:在添加每個列表項時,按Ctrl+Enter鍵可以進行下一個列表項的連續(xù)添加,按Enter鍵表示結束設置List1.List(0)List1.List(1)List1.List(2)…

List1.List(4)3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要屬性ListCount(運行態(tài)屬性):當前列表框中列表項總數(shù)通過ListCount-1得到最后一個列表項的序號ListIndex(運行態(tài)屬性):其值是最后選中的列表項位置序號,若未選任何項目,則其值為-1通過對象名.List(對象名.ListIndex)形式訪問當前最后選中的列表項的內容Text:其值等同于List(對象名.

ListIndex)不能直接設置列表框的Text(運行態(tài)屬性)組合框的Text屬性值還表示用戶直接在編輯區(qū)輸入的文本3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要屬性Sorted(排序):取值為True時,按各列表項內容在字母表中的次序排序;否則不排序,即按加入順序顯示列表框的特有屬性Columns:取值為0時,列表項單列顯示,取值大于0時,列表項多列顯示MultiSelect:決定用戶是否可以一次選擇列表框中多個列表項;取值0——禁止多選;1——通過鼠標單擊或按空格鍵選定或取消多個列表項;2——通過Shift或Ctrl與鼠標或按空格鍵配合進行擴展選擇3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)列表框的特有屬性Selected(運行態(tài)屬性):當用戶同時選中多個列表項時,采用列表框名.Selected(列表項序號)形式,來判斷該列表項序號所對應的列表項是否被選中,值為True表示選中,否則“False”表示未選中SelCount(運行態(tài)屬性):取值是用戶同時選中多個列表項的數(shù)目Style:控制列表框的外觀,取值可以為0(標準形式)和1(復選框形式)3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)組合框的特有屬性Style(風格屬性):下拉組合框

簡單組合框

下拉列表框

(Style=0) (Style=1) (Style=2)3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)適用場合組合框適用于建議性的選項列表,組合框(Style=1或2)包含編輯區(qū)域,這時可輸入不在列表中的選項當希望將輸入的數(shù)據(jù)限制在列表選項之內時,應使用列表框或下拉列表框除簡單組合框外,組合框要比列表框節(jié)省窗體空間,只有單擊組合框的向下箭頭時,才顯示全部列表,所以經常在窗體布局內容較多的情況下選用組合框替換列表框3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要方法AddItem:為列表框和組合框添加列表項對象名.AddItem列表項文本內容

[,插入位置序號]若不指定插入位置,則采用追加形式插入到列表尾該方法一次只能向列表中添加一個列表項通常在Form_Load事件過程中使用該方法來初始化列表項RemoveItem:用于刪除列表框和組合框中指定位置序號的列表項對象名.RemoveItem刪除項的序號該方法一次刪除一個列表項3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要方法Clear:刪除或清空列表框和組合框中所有的列表項執(zhí)行Clear方法后,ListCount屬性自動重新被設置為0實例演示3.5選擇控件課程的錄入分析命令按鈕的Click事件AddItem、RemoveItem、Clear方法PrivateSubCommand1_Click()List1.AddItemText1.TextEndSubPrivateSubCommand2_Click()List1.RemoveItemList1.ListIndexEndSubPrivateSubCommand3_Click()List1.ClearEndSub3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要事件Click:當用戶通過鼠標選擇列表項時,觸發(fā)該事件的發(fā)生在該事件中,一般編寫有關對選中列表項與其他控件的關聯(lián)操作DbClick:適用于列表框和簡單組合框在該事件中,一般編寫有關對選中列表項刪除或轉移到其他控件的關聯(lián)操作DropDown:適用于下拉式的組合框和下拉式列表框;用戶單擊組合框中向下的箭頭時,將觸發(fā)DropDown事件,該事件實際上對應于向下箭頭的單擊事件3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要事件簡單組合框和下拉組合框具有一個文本框似的編輯區(qū),所以它們具有類似于文本框的一些事件,例如:Change、KeyPress等事件[例題3-10][例題3-11]例題3-10編寫一個能夠完成課程的添加、刪除和清空的學生選課程序分析:在命令按鈕的Click事件中編寫代碼將List1中選中的列表項添加到List2中——List1.TextPrivateSubCmdAddItem_Click()List2.AddItemList1.TextEndSub'可用List1.List(List1.ListIndex)替換PrivateSubCmdRemove_Click()List2.RemoveItemList2.ListIndexEndSubPrivateSubCmdClear_Click()List2.Clear'清空列表框EndSub例題3-11利用簡單組合框編寫一個錄入書名的程序,錄入一個書名直接按回車或按下確認按鈕,都可將書名添加進組合框中分析:簡單組合框——Style=1直接按回車或按下確認按鈕,可將書名添加進組合框中

——在命令按鈕的Click事件中編寫添加代碼;設置命令按鈕的Default屬性為True或編寫組合框的KeyPress事件代碼PrivateSubCommand1_Click()'按下確認按鈕,添加

Combo1.AddItemCombo1.TextCombo1.SetFocusEndSubPrivateSubCombo1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Then'當按下回車鍵,直接添加

Combo1.AddItemCombo1.TextCombo1.SetFocusEndIfEndSub3.5圖片控件VB是在Windows操作平臺下,用于開發(fā)和創(chuàng)建具有圖形用戶界面的應用程序的強有力工具之一,圖形控件能美化界面和增加界面的趣味性3.6.1圖片框(PictureBox)和圖像框(Image)圖像框控件用來顯示圖形,該圖形的格式可以是BMP位圖、ICO圖標、圖元文件、JPEG或GIF文件圖片框控件應用更廣,不僅可以象圖像框控件那樣顯示圖形,而且可以繪制圖形、顯示文本或數(shù)據(jù),還經常被用作其他控件的容器圖像框比圖片框占用更少的內存,描圖速度更快

3.5圖片控件3.6.1圖片框(PictureBox)和圖像框(Image)常用屬性Picture:用于設置裝載的圖形。可以在屬性窗口中設置,也可以在運行中通過代碼加載:對象名.Picture=LoadPicture("圖形文件名")對象名1.Picture=對象名2.Picture圖形文件名可包含文件路徑;缺省圖形文件名,表示清除圖形控件中的圖片對象名.Picture=LoadPicture()

3.5圖片控件3.6.1圖片框(PictureBox)和圖像框(Image)常用屬性Autosize(圖片框):取值為True時,該控件能自動調節(jié)大小以顯示完整的圖形Stretch(圖像框):取值為False時,圖像框可自動改變大小以適應加載的圖形;取值為True時,則加載的圖形可自動調整尺寸以適應圖像框的大小3.5圖片控件3.6.1圖片框(PictureBox)和圖像框(Image)圖形方法(適用于圖片框、窗體、打印機)Line:用于畫直線或矩形對象名.Line[(x1,y1)]-(x2,y2)[,顏色][,B](x1,y1)和(x2,y2)表示線段的起點和終點坐標,若缺省(x1,y1)起點坐標,則表示從對象容器的坐標原點開始繪制;B表示繪制矩形Circle:用于畫圓、橢圓、圓弧和扇形對象名.Circle(x,y),半徑

[,[起始角][,[終止角][,長短軸比率]]](x,y)為圓心坐標;圓弧和扇形通過起始角、終止角控制;橢圓通過長短軸比率控制3.5圖片控件3.6.1圖片框(PictureBox)和圖像框(Image)圖形方法(適用于圖片框、窗體、打印機)Pset:用于畫點對象名.Pset(x,y),半徑[,顏色](x,y)為所畫的位置經常用于繪制具體曲線Point:用于獲取指定點的RGB顏色對象名.Point(x,y)主要事件:與窗體基本相同[例題3-12]例題3-12利用上述方法和屬性,實現(xiàn)如下程序分析:圖片自動伸縮適應圖象框:Image1.Stretch=True圖象框加載圖片:Image1.Picture=LoadPicture("c:\winnt\FeatherTexture.bmp")Picture1.Cls清空圖片:Picture1.Picture=LoadPicture()Picture1.Picture=Image1.Picture畫線:Picture1.Line(200,200)-(1000,1000)畫圓:Picture1.Circle(500,500),5003.5圖片控件3.6.2繪圖控件Line(直線)和Shape(形狀)僅適用于在窗體和圖片框內繪制圖形,但繪出的圖形不支持任何事件Line(直線)的主要屬性端點坐標(x1,y1)和(x2,y2)、線形屬性BorderStyle、線寬屬性BorderWidthShape(形狀)的主要屬性形狀屬性Shape(取值為0~5分別代表矩形、正方形、橢圓、圓、圓角矩形和圓角正方形)填充圖案屬性FillStyle填充顏色屬性FillColor(僅當填充圖案為非0時填充顏色設置有效)3.5圖片控件3.6.2繪圖控件Line(直線)和Shape(形狀)Line控件設置BorderStyle=4

Shape(形狀)控件設置FillStyle=7、Shape=2、FillColor=紅色效果如圖

3.7滾動條和計時器3.7.1滾動條VB提供了HScroll(水平)和Vscroll(垂直)兩種滾動條控件,用于與其他對象配合,瀏覽長列項目和信息;有時也用于數(shù)據(jù)輸入主要屬性Max和Min屬性:設置滑塊滾動的數(shù)值范圍SmallChange和LargeChange屬性:設置滑塊滾動的增量值單擊滾動條空白處用LargeChange指定其移動量單擊滾動條兩端箭頭用SmallChangeValue:設置當前滑塊的位置3.7滾動條和計時器3.7.1滾動條主要事件Change:只要滑塊位置發(fā)生變化,即當Value屬性值發(fā)生變化時,觸發(fā)該事件Scroll:僅當拖動滑塊時,觸發(fā)本事件單擊滾動條兩端箭頭或滾動條空白處時不發(fā)生Scroll事件[例題3-13]例題3-13通過改變拖動滾動條實現(xiàn)形狀大小的變化程序分析:形狀圓?——Shape=2滾動條變化改變形狀的大小(Width、Height)——滾動條的Change事件PrivateSubHScroll1_Change()Shape1.Width=HScroll1.ValueEndSubPrivateSubVScroll1_Change()Shape1.Height=VScroll1.ValueEndSub3.7滾動條和計時器3.7.2計時器(Timer)也稱為時間控件,它響應時間的流逝經常利用該控件實現(xiàn)每隔一段時間有規(guī)律的完成相應的操作計時器是在運行時的不可見控件,它沒有位置和大小屬性主要屬性Interval:指定計時器事件之間的間隔時間,以ms(毫秒)為單位,取值范圍為0~65535;取(缺省值)為0時Timer控件無效3.7滾動條和計時器3.7.2計時器(Timer)主要屬性Enabled:決定計時器控件是否對時間的推移做響應。取值為False,禁用Timer控件;為True,Timer控件有效;Interval屬性必須在計時器控件的Enabled屬性為真時,才能每隔Interval的時間引發(fā)一次計時器事件主要事件時間控件只有Timer事件。該事件具有周期性,通過創(chuàng)建Timer事件程序用以告訴VB在每隔Interval的時間該做什么。在實際的編程中,常常利用該事件,實現(xiàn)某些簡單的動畫或有規(guī)律的重復性操作。

[例題3-14]

例題3-14編寫程序實現(xiàn)系統(tǒng)時間的動態(tài)顯示,以及顯示內容的顏色動態(tài)變化程序分析:動態(tài)——Timer事件時間——Now函數(shù)返回系統(tǒng)時間顏色——ForeColor屬性、RGB函數(shù)、Rnd函數(shù)PrivateSubTimer1_Timer()Label1.Caption=Now'Now函數(shù)返回系統(tǒng)時間

r=Int(Rnd*255)'Rnd函數(shù)產生隨機數(shù)

g=Int(Rnd*255)b=Int(Rnd*255)Label1.ForeColor=RGB(r,g,b)'RGB函數(shù)返回一個顏色值EndSub3.8焦點窗體和多數(shù)控件(文本框、命令按鈕、選項按鈕、復選框、滾動條、圖片框、組合框、列表框)一般都能得到焦點,而且能從外觀看出它是否得到焦點,例如:當文本框得到焦點,表現(xiàn)為文本框中有閃爍的光標;而命令按鈕、選項按鈕、復選框等則表現(xiàn)為控件表面上有一個虛線框。對于窗體來說,只有當窗體上沒有能聚焦的控件時,該窗體才能接收焦點當對象得到焦點時,會觸發(fā)GotFocus事件;而當對象失去焦點時,會觸發(fā)LostFocus事件常常利用LostFocus事件過程來進行數(shù)據(jù)的確認和有效性檢查,同時修正或改變在GotFocus事件過程中設立的條件3.8焦點常用的設置焦點的方法程序運行時,通過單擊該對象,得到焦點程序運行時,使用Tab鍵、快捷的訪問鍵來選擇該對象,使其得到焦點使用SetFocus方法焦點只能移到可見的窗體和控件上,只有當對象的Enabled和Visible屬性均為True時,它才可能接收焦點不能直接在Form_Load事件過程中使用SetFocus方法為對象設置焦點,因為窗體在Load事件完成前,窗體本身和該窗體上的控件都是不可見的。必須先顯示窗體,然后才能對窗體或其上的控件設置焦點PrivateSubForm_Load()Form1.Show'必須先使窗體可見

Text1.SetFocusEndSub3.9鍵盤與鼠標事件過程3.9.1鍵盤事件過程對于接受文本輸入的控件,如:文本框、簡單組合框和下拉組合框等,需要控制和處理輸入的文本,常常需要對鍵盤事件進行編程KeyPress、KeyDown和KeyUp鍵盤事件只用于能夠聚焦的對象,如窗體、文本框、命令按鈕、選項按鈕、復選框、組合框、列表框、圖片框、滾動條等控件對于窗體,僅當它上面沒有可視和有效的控件或KeyPreview屬性被設置為True時才能接收鍵盤事件3.9鍵盤與鼠標事件過程3.9.1鍵盤事件過程KeyPress事件當用戶按下和松開一個能產生Ascii碼的鍵時發(fā)生KeyPress事件。嚴格地說,當按下某個能產生Ascii碼的鍵時,所觸發(fā)的是當前得到焦點的那個對象的KeyPress事件PrivateSub對象名_KeyPress(KeyAsciiAsInteger)

……

EndSub參數(shù)KeyAscii就是該過程接受到的按鍵的Ascii碼按下大寫字母“B”,KeyAscii的值為66

按下小寫字母“b”,KeyAscii的值為983.9鍵盤與鼠標事件過程3.9.1鍵盤事件過程KeyPress事件在鍵盤上的按鍵并非都能產生Ascii碼,如:方向鍵←、→、↑、↓、功能鍵F1~F12、Shift、Ctrl、Alt鍵就不產生Ascii碼,不會引發(fā)KeyPress事件,而數(shù)字、大小寫字母等可打印的鍵盤字符、Enter、BackSpace、Esc、Tab等都可以KeyPress事件過程在截取TextBox或ComboBox控件所輸入的擊鍵時是非常有用的,它可立即測試擊鍵的有效性或在字符輸入時對其進行格式處理改變keyascii參數(shù)的值會改變所顯示的字符[例題3-15]

、[例題3-16]

例題3-15編寫程序,實現(xiàn)對于用戶在文本框中輸入的字母,不管大小寫,始終以大寫顯示在文本框中分析:小寫字母按鍵的Ascii值的范圍——[97,122]小寫轉換成大寫字符——小寫字母與大寫字母的Ascii差值為32輸入時立即轉換——編寫文本框的KeyPress事件過程PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii>=97AndKeyAscii<=122Then'判斷是否是小寫字母

KeyAscii=KeyAscii–32'小寫轉換成大寫

EndIfEndSub例題3-16在默認情況下,控件的鍵盤事件優(yōu)先于窗體的鍵盤事件,因此在發(fā)生鍵盤事件時,總是激活目前得到焦點的控件的鍵盤事件;若窗體的KeyPreview屬性被設置為True(默認為False),則不管目前誰得到焦點,總是先觸發(fā)窗體鍵盤事件,后觸發(fā)焦點控件的鍵盤事件,否則不會觸發(fā)窗體的鍵盤事件注意程序中當窗體的KeyPreview屬性被設置為True或默認值False,鍵盤事件的不同觸發(fā)次序設窗體的KeyPreview屬性被設置默認值False,程序運行時,通過命令按鈕切換為True,在窗體和文本框的KeyPress事件過程中編寫了輸出標志信息3.9鍵盤與鼠標事件過程3.9.1鍵盤事件過程KeyUp和KeyDown事件過程和KeyPress事件不同,KeyUp和KeyDown事件返回的是鍵盤的直接狀態(tài),即KeyUp和KeyDown事件返回的是“鍵”,而KeyPress事件返回的是“字符”的Ascii碼。當用戶按下鍵盤上的任意一個鍵時,就會觸發(fā)焦點對象的KeyDown事件,當釋放按鍵,就會觸發(fā)KeyUp事件3.9鍵盤與鼠標事件過程3.9.1鍵盤事件過程KeyDown事件過程PrivateSub

對象名_KeyDown(keycodeAsInteger,_

shiftAsInteger)……EndSubKeyUp事件過程PrivateSub

對象名_KeyUp(keycodeAsInteger,_

shiftAsInteger)……EndSub3.9鍵盤與鼠標事件過程3.9.1鍵盤事件過程KeyUp和KeyDown事件過程KeyCode參數(shù)是用戶按下的那個鍵的掃描碼(鍵盤上的每一個按鍵都一個掃描碼,且各自不同),該碼以“鍵”為準,它不同于KeyPress事件中的KeyAscii參數(shù)(以“字符”為準)大小寫字母“A”和“a”用的是同一個鍵,所以它們的掃描碼相同,即KeyCode相同,而Ascii碼不同(“A”是65、“a”是97),即KeyAscii不同往往只能通過KeyCode參數(shù)了解用戶按下鍵盤上的哪個鍵(不是字符)3.9鍵盤與鼠標事件過程3.9.1鍵盤事件過程KeyUp和KeyDown事件過程Shift參數(shù)是Shift、Ctrl和Alt三個轉換鍵目前按下的狀態(tài)信息;取值是一個是位域,它用最少的位響應SHIFT鍵(位0)、CTRL鍵(位1)和ALT鍵(位2)。這些位分別對應于值1、2和4十進制二進制轉換鍵按下情況0000沒有按下轉換鍵1001只按下Shift鍵2010只按下Ctrl鍵3011按下Ctrl+Shift鍵4100只按下Alt鍵5101按下Alt+Shift鍵6110按下Alt+Ctrl鍵7111按下Alt+Ctrl+Shift鍵3.9鍵盤與鼠標事件過程3.9.1鍵盤事件過程KeyUp和KeyDown事件過程的應用擴展的字符鍵如功能鍵等定位鍵鍵盤修飾鍵和按鍵的組合區(qū)別數(shù)字小鍵盤和常規(guī)數(shù)字鍵[例題3-17]下列情況不會觸發(fā)KeyDown和KeyUp事件窗體有一個CommandButton控件,并且Default屬性設置為True時的Enter鍵窗體有一個CommandButton控件,并且Cancel屬性設置為True時的Esc鍵Tab鍵[例題3-18]例題3-17編寫程序,利用KeyDown和KeyUp事件顯示按下鍵和釋放鍵情況分析:根據(jù)KeyCode返回對應的字符——Chr函數(shù)PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)Print"按下";Chr(KeyCode);KeyCodeEndSubPrivateSubText1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)Print"釋放";Chr(KeyCode);KeyCodeEndSubPrivateSubform_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfShift=1ThenPrint"按下Shift鍵";KeyCodeIfShift=2ThenPrint"按下Ctrl鍵";KeyCodeIfShift=3ThenPrint"按下Ctrl+Shift鍵";KeyCodeIfShift=4ThenPrint"按下Alt鍵";KeyCodeIfShift=5ThenPrint"按下Alt+Shift鍵";KeyCodeIfShift=6ThenPrint"按下Alt+Ctrl鍵";KeyCodeIfShift=7ThenPrint"按下Alt+Ctrl+Shift鍵";KeyCodeEndSubPrivateSubform_KeyUp(KeyCodeAsInteger,ShiftAsInteger)Print"釋放";KeyCodeEndSub例題3-18編寫程序,利用KeyDown和KeyUp事件顯示按下和釋放轉換鍵情況3.9鍵盤與鼠標事件過程3.9.2鼠標器事件過程鼠標的單擊和雙擊事件鼠標事件:鼠標的按下、移動和釋放事件,即MouseDown、MouseMove和MouseUp事件適用于以下對象,包括窗體、文本框、命令按鈕、選項按鈕、復選框、列表框、圖片框、標簽、框架等鼠標事件被用來識別和響應各種鼠標狀態(tài),并把這些狀態(tài)看作獨立的事件;在按下鼠標按鈕并釋放時,Click事件只能把此過程識別為一個單一的操作——單擊操作鼠標事件不同于Click事件和DblClick事件之處還在于,鼠標事件能夠區(qū)分各鼠標按鈕與Shift、Alt、Ctrl鍵3.9鍵盤與鼠標事件過程3.9.2鼠標器事件過程MouseDown事件過程PrivateSub對象名_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSubMouseUp事件過程:PrivateSub對象名_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSub3.9鍵盤與鼠標事件過程3.9.2鼠標器事件過程MouseMove事件過程:PrivateSub對象名_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSubShift、X、Y參數(shù)的含義同鍵盤事件Button參數(shù)值指示此時按下或釋放了哪個鼠標鍵,該參數(shù)是一個整數(shù)3.9鍵盤與鼠標事件過程3.9.2鼠標器事件過程對于MouseMove事件來說,button參數(shù)指示的是所有鼠標按鍵當前的狀態(tài);一個MouseMove事件可指示某些、全部或沒有一個按鈕被按下MouseDown和MouseUp事件來說,button參數(shù)在每個事件精確地指示一個按鍵,即不能檢查兩個或三個鍵同時被按下或松開的情況,因此取值只能是下表中的前三種十進制二進制轉換鍵按下情況0000沒有按下任何鼠標鍵1001鼠標左鍵被按下2010鼠標右鍵被按下3011鼠標左、右鍵同時被按下4100鼠標中間鍵被按下5101鼠標中間、左鍵同時被按下6110鼠標中間、右鍵同時被按下7111鼠標三鍵同時被按下3.9鍵盤與鼠標事件過程3.9.2鼠標器事件過程MouseDown是三種鼠標事件中最常使用的事件。例如,在運行時可用它調整控件在窗體上的位置,也可用它實現(xiàn)某些圖形效果。按下鼠標按鈕時就可觸發(fā)此事件。MouseMove事件伴隨鼠標指針在對象間移動時連續(xù)不斷地產生。除非有另一個對象捕獲了鼠標,否則,當鼠

溫馨提示

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

評論

0/150

提交評論