第五章簡單窗體設計_第1頁
第五章簡單窗體設計_第2頁
第五章簡單窗體設計_第3頁
第五章簡單窗體設計_第4頁
第五章簡單窗體設計_第5頁
已閱讀5頁,還剩83頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章窗體和常用控件本章目標

窗體(Form)文本控件

按鈕(Button)復選框和單選按鈕(CheckBox&RadioButton)分組框(GroupBox)列表框和組合框(ListBox&ComboBox)滾動條(ScrollBar)計時器(Timer)圖片框(PictureBox)對話框(Dialog)鼠標和鍵盤事件訓練項目1:窗體(Form)的設置相關知識窗體(Form)是用戶交互的主要載體,是可視化程序設計的基礎界面,通常為矩形,通過組合不同控件和編寫代碼,可從中得到信息并響應該信息。窗體可以是標準窗口、多文檔界面(MDI)窗口、對話框或圖形化例程的顯示界面。窗體是對象類,因為它們從Control類繼承,與.NET框架中的所有對象一樣,窗體是類的實例。如果查看窗體的對象層次,就會明白它實際上是從Object類逐層派生出來的子類。表5.1列出了Form類的父類,以及Form類從每個父類繼承的內容的簡短說明。用“Windows窗體設計器”創(chuàng)建的窗體是類。當運行中顯示窗體的實例時,此類用作創(chuàng)建窗體的模板。這些對象公開定義其外觀的屬性、行為的方法,以及與用戶交互的事件。通過設置窗體屬性及編寫響應其事件的代碼,可自定義該對象以滿足應用程序的要求。雖然完全可以在“代碼編輯器”中創(chuàng)建窗體,但使用“Windows窗體設計器”創(chuàng)建和修改窗體更為簡單。VB.NET與以前使用的窗體引擎相比,有幾個明顯的優(yōu)點。窗體可以自動改變其中組件的大小,還可以把控件鎖定在特定的位置,也就是說,無需借助第三方的工具來完成相應的工作。此外,還可以創(chuàng)建透明的窗體。任務1:創(chuàng)建VB.NET窗體圖5.1創(chuàng)建并調整后的窗體當用戶新建一個VB.NET項目時,VB.NET將創(chuàng)建一個默認名為Form1的窗體,如圖5.1所示。

用戶通過修改窗體的Size屬性來修改窗體的大小,也可以通過鼠標直接拖曳窗體周圍的小方塊或通過程序代碼來調整窗體的大小。對調整前后進行比較可以發(fā)現(xiàn),VB.NET定制窗體非常簡單。窗體生成后的屬性都是默認值,用戶可以通過“視圖”|“屬性窗口”菜單,或按“F4”鍵,或用鼠標右鍵單擊窗體,在彈出的快捷菜單中選擇“屬性”命令來激活屬性窗口,并對屬性值重新設定。

窗體的常用屬性如表5.2所示。任務2:設置窗體的屬性屬性說明Name窗體對象的名稱WindowState獲取或設置窗體運行時的顯示狀態(tài)StartPosition確定窗體運行時的起始位置Text確定標題欄顯示文本W(wǎng)idth確定窗體的寬度Height確定窗體的高度Left確定窗體左邊緣的橫坐標xTop確定窗體上邊緣的縱坐標yControlBox確定標題欄是否顯示控制按鈕MaximizeBox確定標題欄是否顯示最大化按鈕MinimizeBox確定標題欄是否顯示最小化按鈕AcceptButton確定Enter鍵的默認擊活按鈕CancelButton確定Esc鍵的默認擊活按鈕Modal確定窗體是否為有模式顯示窗體(只讀)ActiveControl用于獲取或設置窗體上的活動控件ActiveMdiChild用于獲取或設置多文檔界面的活動子窗口AutoScroll確定控件位于工作區(qū)之外時是否顯示滾動條BackColor設置窗體的背景顏色BackgroundImage設置窗體的背景圖像Enabled確定窗體是否可用(可與用戶交互)Font用于設置窗體上的顯示字體ForeColor用于設置窗體或控件的前景顏色VB.NET的窗體有多個方法和語句來控制窗體的加載、顯示、隱藏、卸載等。表5.3列出了窗體的常用方法。任務3:設置窗體的常用方法和事件方法說明對象調用格式Show顯示窗體窗體名.Show()Hide隱藏窗體窗體名.Hide()Refresh窗體刷新窗體名.Refresh()Activate激活窗體并得到光標窗體名.Activate()Close關閉窗體窗體名.Close()ShowDialog以模式對話框形式顯示窗體窗名.ShowDialog()這些方法或語句的語法格式如下:

窗體名稱.方法()

Show方法用來顯示一個已經(jīng)裝入內存的窗體,如果調用時該窗體沒有被加載,則VB.NET將自動加載該窗體。例如,下面的代碼將在單擊窗體Form1后,自動加載frmhello窗體。PrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMyBase.Click DimfrmhelloAsNewfrmhello() frmhello.Show()'顯示frmHello窗體EndSub注意:VB.NET中,窗體作為類不能直接引用,使用前必須先聲明。如上面的代碼中先定義DimfrmhelloAsNewfrmhello(),然后才能調用該對象的Show方法。Close方法用來關閉窗體。當窗體關閉之后,所有在運行時放到窗體上的對象都是不可再訪問的,而在設計時放到該窗體上的控件將保持不變,任何對這些控件的訪問都會導致窗體重新打開。Hide方法用來隱藏窗體,隱藏窗體時相當于將窗體的Visible屬性設置為False。此時用戶將無法訪問隱藏窗體上的控件,但是程序仍可以使用隱藏窗體上的空間。如果調用Hide方法時窗體還沒有加載,Hide方法將自動加載該窗體,但是不顯示它。每個對象都可以對外界的有關動作進行識別和響應,所有事件都是系統(tǒng)事先設計定義好的,并針對每個對象的特定動作,開發(fā)人員不能自己創(chuàng)建新的事件,只能給對象所能識別的事件編寫代碼。窗體的常用事件如表5.4所示。當程序運行時,將自動觸發(fā)Load事件,有關窗體的初始化可以放入該事件。事件說明Load加載窗體Activated窗體激活Deactivate窗體成為非活動窗體Resize窗體改變大小Paint重繪窗體Click單擊窗體DoubleClick雙擊窗體Closed窗體關閉界面設計:新建項目,并將窗體調整到合適的大小。程序代碼如下:PrivateSubForm1_Resize(ByValsenderAsObject,ByValeAsSystem.EventArgs)_ HandlesMyBase.Resize MsgBox("我變寬了!") '當窗體改變大小時顯示該消息EndSubPrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)_ HandlesMyBase.Click Me.Width=Me.Width+20 '當單擊窗體時讓該窗體的寬度增加20個像素點EndSub任務實現(xiàn):單擊窗體,使窗體的寬度增加20個像素點。運行界面如圖5.2所示

圖5.2單擊窗體前后界面及消息框要想設計實用的程序界面,光有窗體還不夠,還要在窗體中添加各種控件??丶赩B.NET程序設計中是一個非常重要的角色,也是VB.NET程序設計的重要基礎。它可以提供事件過程,供設計者編寫程序代碼,從而完成程序各部分應執(zhí)行的操作,還可以通過設置控件的屬性值設計出精美的用戶界面。下面將介紹幾個最常用的控件。訓練項目2:常用窗體控件(Controls)

任務1:使用標簽任務2:使用文本控件任務3:使用按鈕(Button)任務4:使用復選框和單選按鈕(CheckBox&RadioButton)任務5:使用分組框(GroupBox)任務6:使用列表框和組合框(ListBox&ComboBox)任務7:使用計時器(Timer)任務8:使用圖片框(PictureBox)任務9:使用對話框(Dialog)任務10:使用鼠標和鍵盤事件任務1:使用標簽(Label)相關知識:標簽(Label)控件的功能是顯示字符串,通常顯示的是文字說明信息,用來標識輸入或輸出區(qū)域。VB.NET中包括2種標簽控件,分別是Label控件和LinkLabel控件。LinkLabel控件(鏈接標簽)是VB.NET新增的控件,通過它可以向應用程序添加Web樣式的鏈接,它除了具有Label控件的所有屬性、方法和事件外,還具有超鏈接和鏈接顏色的屬性。表5.5給出了Label控件的常用屬性。對于Label控件一般不寫事件代碼,盡管它也能響應很多事件,如Click、Resize、TextChanged等,但是在實際使用中還是主要用來標識信息。如果有特殊的需要,也可以編寫事件代碼程序,以讓它能響應相應的事件。Visible設置標簽是否顯示在窗體上任務實現(xiàn):單擊鏈接標簽,并將單擊的次數(shù)記錄在普通標簽上界面設計:(1)在窗體上放置一個鏈接標簽和一個普通標簽控件,設置AutoSize屬性為True,讓它能根據(jù)內容自動改變大小。(2)設置BorderStyle屬性為None,即以無邊框的形式顯示標簽。(3)設置普通標簽的Text屬性為“鏈接了0次”,鏈接標簽的Text屬性為“請鏈接”。在鏈接標簽的LinkClick事件中編寫程序代碼如下:SharedcountAsIntegerPrivateSubLinkLabel1_LinkClicked(ByValsenderAsSystem.Object,ByValeAs_System.Windows.Forms.LinkLabelLinkClickedEventArgs)HandlesLinkLabel1.LinkClickedcount=count+1Label1.Text="鏈接了"&count&"次"EndSub程序運行后的界面及單擊“請鏈接”標簽5次后的界面如圖5.3和圖5.4所示。

圖5.3程序初始界面圖5.4單擊“請鏈接”標簽5次后的界面任務2:使用文本框(TextBox)相關知識:文本框(TextBox)控件用來顯示輸入和輸出的文本信息,是開發(fā)應用程序時最常用的控件。TextBox控件是相當靈活的數(shù)據(jù)顯示工具,通常用于編輯文本,不過也可使其成為只讀控件。它可以顯示單行文本,也可以顯示多個行;還可以對文本換行控件大小及添加基本格式進行設置。TextBox控件為在該控件中顯示或輸入的文本提供單格式化樣式。若要顯示多種類型的帶格式文本,則要使用其他控件。TextBox控件顯示的文本包含在Text屬性中。默認情況下,最多可在一個文本框中輸入2048個字符。如果將MultiLine屬性設置為True,則最多可輸入32KB的文本。Text屬性可以在設計時使用“屬性”窗口設置,或在運行時用代碼設置,或在運行時通過用戶輸入來設置。可以在運行時通過讀取Text屬性來檢索文本框的當前內容。表5.6列出了TextBox控件的常用屬性。表5.6

TextBox控件的常用屬性TextBox控件最常用的事件是TextChanged事件,該事件在文本框的Text屬性發(fā)生改變時觸發(fā)。文本框還有自己的方法,它們?yōu)殚_發(fā)人員設置文本框提供了方便。表5.7

TextBox控件的常用方法任務實現(xiàn):在一個文本框中輸入字符,另外的文本框中同步顯示相應的內容PrivateSubTextBox1_TextChanged(ByValsenderAsSystem.Object,ByValeAs_System.EventArgs)HandlesTextBox1.TextChangedTextBox1.SelectAll() '選中TextBox1中的所有文本TextBox1.Copy() '將選中的文本復制到剪貼板上TextBox2.Clear() '將TextBox2中的所有文本刪除TextBox2.Paste()'將選中文本用剪貼板上的文本替換TextBox1.SelectionStart=Len(TextBox1.Text) '取消TextBox1文本的選中狀態(tài)EndSub界面設計:

在窗體上放置兩個文本框,并設置它們的Text屬性均為空。程序代碼如下:設計時的界面和運行后的界面見圖5.5和圖5.6。圖5.5設計時的界面圖5.6運行后的界面任務3:使用

按鈕(Button)相關知識:按鈕(Button)控件主要用來執(zhí)行某一命令功能,也稱命令按鈕。命令按鈕的最常用事件是Click事件。通常在Click事件中編寫一段代碼,當用戶用鼠標單擊這個按鈕時,就會執(zhí)行某一特定的功能。表5.8

Button控件的常用屬性總體要求:圖5.7程序初始界面在任務4的基礎上,增加兩個標簽和按鈕控件(其中一個按鈕具有圖標),如圖5.7所示,對各對象的屬性分別設定,并編程實現(xiàn)如下功能:(1)密碼以“*”的形式顯示,用戶名和密碼最大長度為6個字符。(2)如果用戶名為“ABC”且密碼為“123”則顯示“歡迎光臨!”,否則顯示“密碼或用戶名錯誤!”。(3)如果輸入3次不對,則將“登錄”按鈕禁用。并顯示“你無權登錄!”。圖5.7程序初始界面任務實現(xiàn):登錄界面的設計界面設計:

根據(jù)要求在窗體上放置2個文本框、2個標簽、2個按鈕,并按表5.9設置初始屬性值。

表5.9界面中控件的初始屬性值

根據(jù)要求,命令按鈕代碼程序如下。

“退出”按鈕的程序代碼:PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesButton2.ClickEnd'當單擊"退出"按鈕時,結束程序運行EndSub程序運行后的各種界面效果如圖5.8所示,第一次輸入了正確的用戶名和密碼,則顯示“歡迎光臨!”;第二次輸入了錯誤的密碼和用戶名,則顯示“密碼或用戶名錯誤!”;三次輸入錯誤時,則提示“你無權登錄!”,同時將“登錄按鈕”禁用,變成了灰色的。圖5.8程序運行后的各種界面效果圖任務4:使用復選框和單選按鈕(CheckBox&RadioButton)相關知識:復選框(CheckBox)和單選按鈕(RadioButton)控件功能相近,都是選擇類控件,用來設置要或不要某一選項功能。CheckBox控件指示某特定選項是打開的還是關閉的。它常用于為用戶提供是/否或真/假選項??梢猿山M使用CheckBox控件以顯示多重選項,用戶可以從中選擇一項或多項。RadioButton控件為用戶提供由兩個或多個互斥選項組成的選項集。雖然CheckBox控件和RadioButton控件看似功能類似,卻存在重要差異。它們的相似之處在于,它們都用于指示用戶的可選項;不同之處在于,在單選按鈕組中一次只能選擇一個單選按鈕,當用戶選擇某單選按鈕后,同一組中的其他單選按鈕不能同時選定。但是對于CheckBox控件可以選擇任意數(shù)量的選擇項。多個復選框或單選按鈕可以使用GroupBox控件進行分組。這對于用戶界面設計很有用,因為成組控件可以在窗體設計器上一起移動。定義單選按鈕組還將告訴用戶:“這里有一組選項,您可以從中選擇一個且只能選擇一個?!盋heckBox控件和RadioButton控件的常用屬性。

CheckBox控件和RadioButton控件的最常用事件是CheckedChanged事件和Click事件,當單擊鼠標時,CheckBox控件會觸發(fā)Click事件和CheckedChanged事件,但是RadioButton控件可能只觸發(fā)Click事件,不一定觸發(fā)CheckedChanged事件。表5.10CheckBox和RadioButton控件的常用屬性(1)當單擊“跑步”或“打球”時,在文本框中顯示你的愛好為跑步或打球。(2)當單擊“男”或“女”時,在文本框中顯示你的性別。界面設計:在窗體上放置2個CheckBox控件和2個RadioButton控件,再裝入1個TextBox控件,并適當調整大小和設置初始的屬性值。圖5.9程序初始界面任務實現(xiàn):設計如圖5.9所示的界面,實現(xiàn)以下功能圖5.10顯示了部分運行效果。在上面的程序中,CheckBox控件的Click事件代碼,可以不加修改地放在CheckChanged事件中運行。該控件的Checked屬性和CheckedState屬性是不同的,Checked屬性只有兩個值True和False,而CheckedState屬性有3個值,分別是CheckState.Checked、CheckState.Indeterminate和CheckState.Unchecked。圖5.10部分運行效果注意:在同一容器中的單選按鈕屬于同一組。如本例中的RadioButton1和RadioButton2都在窗體中,因此屬于同一組單選按鈕。任務5:使用分組框(GroupBox)相關知識:分組框(GroupBox)控件用于為其他控件提供可識別的分組。它是一個容器控件,使用分組框能按功能細分窗體。它對所有選項進行分組,為用戶提供邏輯可視化線索。GroupBox控件類似于Panel控件,但只有GroupBox控件顯示標題,而且只有Panel控件可以有滾動條。一般不對分組框編寫事件過程,盡管它也能響應很多事件,用戶通常只用它的分組功能來細化界面。當設置分組框的Visible屬性為False時,該分組框內的對象將一起被隱藏。分組框的其他常用屬性是Text屬性和Name屬性,Text顯示分組框的標題信息,Name屬性是分組框的名字,在程序中引用時要指定Name屬性。總體要求:設計如圖5.11所示的界面,適當調整控件大小和位置,并設置初始屬性。將“性別”分成一組,將“收入狀況”分成另一組,要求單擊命令按鈕能隱藏性別組,再次單擊,能顯示性別組。程序代碼如下:PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesButton1.ClickIfGroupBox1.VisibleThenGroupBox1.Visible=FalseElseGroupBox1.Visible=TrueEndIfEndSub任務實現(xiàn):利用分組框,將控件分組。程序運行的界面見圖5.11。上面的程序運行時,讀者可以發(fā)現(xiàn):“性別”這一組,能選擇男或女,兩者必須選擇一個,而且只能選擇一個?!笆杖霠顩r”這一組,兩者也是必須選擇一個,而且只能選擇一個。但是從整個窗體來看,卻選擇了兩個RadioButton,這是由于分組框使得2組單選鈕分別屬于不同的分組框容器,從而使用戶可以分別選擇選項。圖5.11程序運行的兩種界面任務6:列表框和組合框(ListBox&ComboBox)相關知識:列表框(ListBox)和組合框(ComboBox)控件都能為用戶提供一個可供選擇的列表,ComboBox控件和ListBox控件具有相似行為,在某些情況下可以互換。但是也存在其中一種控件更適合于某任務的情況。組合框通常應用于存在一組“建議”選項的情況,而列表框通常應用于限制選項為列表中內容的情況。組合框整合了一個文本框,可以輸入列表中沒有的選項,但是當設置組合框的DropDownStyle屬性為ComboBoxStyle.DropDownList時例外。組合框在用戶單擊下箭頭鍵之前不顯示完整列表,它比列表框節(jié)約窗體空間。但是當設置組合框的DropDownStyle屬性為ComboBoxStyle.Simple時,將顯示完整列表,反而比列表框占用的空間多。列表框(ListBox)

ListBox控件顯示一個項列表,用戶可從中選擇一項或多項。如果項總數(shù)超出可以顯示的項數(shù),則自動向ListBox控件添加滾動條。ListBox控件的常用屬性見表5.11。

表5.11

ListBox控件的常用屬性ListBox控件的常用方法如下。1.Items.Add方法用于將項目添加到ListBox控件中,其語法格式如下:Object.Items.Add(Item)其中,Object指Listbox控件名,Item是要添加到列表框中的字符表達式。2.Items.Insert方法用于將項目插入到ListBox控件中,其語法格式如下:Object.Items.Insert(Item,Index)其中:(1)Object,指Listbox控件名,Item是要添加到列表框中的字符表達式。(2)Index,是可選參數(shù),用來指定新項目在列表框中的位置。如果所給的Index值有效,則Item將放置在列表框相應的位置。如果省略Index,當Sorted屬性值為True時,Item將添加到恰當?shù)呐判蛭恢茫划擲orted屬性值為False時,Item將添加到列表的結尾。3.Items.Remove方法用于從ListBox控件中刪除一個項目,其語法格式如下:Object.Items.Remove(Item)其中:(1)Object,指Listbox控件名。(2)Item,用來指定要刪除的項目。4.Items.RemoveAt方法RemoveAt方法與Remove方法有所不同,它是按照索引方式刪除ListBox控件中的項目,其語法格式如下:Object.Items.RemoveAt(Index)其中:(1)Object,指Listbox控件名。(2)Index,用來指定要刪除的項目在列表框中的位置。5.Items.Clear方法Clear方法可以刪除ListBox控件的所有項目,其語法格式如下:Object.Items.Clear()修改和刪除列表框中的項目,可以通過以上的方法或在屬性窗口修改Items的屬性值來實現(xiàn)。單擊Items右邊的按鈕,將彈出“字符串集合編輯器”對話框(如圖5.12所示),用戶可以在其中修改列表框的項目。圖5.12列表框的“屬性”對話框和“字符串集合編輯器”對話框ListBox列表框最常用的事件是SelectedIndexChanged事件,當鼠標在列表框中單擊任一條目時,觸發(fā)該事件。其事件過程如下:

PrivateSub對象名_SelectedIndexChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_Handles對象名.SelectedIndexChanged……'添加自己的代碼EndSub設計如圖5.13所示的界面,當單擊“增加條目”按鈕時,將文本框中的內容添加到列表框中;當單擊“刪除條目”按鈕時,將列表框的第一條列表項刪除。當單擊列表框中的條目時,以消息框的形式顯示條目內容。界面設計:在窗體上添加1個列表框、1個文本框、3個按鈕。設置各對象的初始屬性并調整其大小,如圖5.13所示。程序運行后的界面如圖5.14所示。圖5.13程序初始界面任務實現(xiàn)圖5.14程序運行后的部分界面組合框(ComboBox)相關知識:組合框(ComboBox)控件的功能和ListBox控件非常相似,但它一次只能選取或輸入一個選項,而不能設定為多重選取模式。ComboBox控件默認情況下分兩部分顯示:頂部是一個允許用戶鍵入列表項的文本框。下面是列表框,它顯示用戶可以選擇列表項。ComboBox控件與ListBox控件相同的屬性、方法、事件等,本節(jié)不再贅述,ComboBox控件的一些特有屬性,如表5.12所示。表5.12

ComboBox控件的特有屬性圖5.15顯示了取不同的DropDownStyle屬性值時ComboBox控件的外觀。圖5.15取不同的DropDownStyle屬性值時的ComboBox控件任務7:計時器(Timer)相關知識:計時器(Timer)控件是按標準時間間隔引發(fā)事件的控件。該控件的屬性不多,但在動畫制作或定期執(zhí)行某種操作等方面很有用。該控件的屬性主要有:定義計時器時間間隔長度的Interval屬性,其值以毫秒為單位;決定定時器是否有效的Enabled屬性。Timer控件的主要方法是Start和Stop,它們分別用于打開和關閉計時器。計時器在關閉時重置;不存在暫停Timer組件的方法。Timer控件的事件只有一個。如果啟用了Timer組件,則每個時間間隔都將引發(fā)一個Tick事件。在Tick事件中添加代碼,則每個時間間隔將自動執(zhí)行一次該代碼。界面設計:在窗體上放置兩個按鈕、一個圖片框和一個計時器,由于計時器控件運行時不可見,所以設計時將被安排在窗體的下方,如圖5.17所示。適當調整窗體中各對象的位置和大小,并設置各對象的屬性值。圖5.17設計階段界面示意圖任務實現(xiàn):利用計時器實現(xiàn)圖片的自動移動表5.14列出了窗體上各個對象的屬性設定值。表5.14窗體中控件屬性表上面程序運行后如果單擊“開始移動”按鈕,則圖片將慢慢地向右移動。單擊“暫停移動”按鈕,圖片將停止移動,如圖5.18所示。與VisualBasic6.0不同,在VB.NET中,Timer對象不能自動啟動,必須調用Start方法才能啟動。圖5.18運行后的效果圖相關知識:圖片框(PictureBox)控件用于顯示位圖、GIF、JPEG、圖元文件或圖標格式的圖形。所顯示的圖片由Image屬性確定,該屬性可在運行時或設計時設置。SizeMode屬性控制圖像顯示的方式,如表5.15所示。任務8:使用圖片框(PictureBox)表5.15

PictureBox控件的常用屬性PictureBox控件的常用事件是Click事件,下面將演示單擊圖片框后,圖片框的圖片將消失。界面設計:設計如圖5.19所示的界面。在窗體上放1個標簽、1個文本框、1個圖片框,并分別設置它們的屬性。其中圖片框的SizeMode屬性值為StretchImage,BorderStyle屬性值為Fixed3D。圖5.19設計階段界面示意圖任務實現(xiàn):PictureBox控件演示程序功能:在文本框中輸入圖片文件的存放路徑和文件名并按回車鍵,圖片框裝入該圖片并顯示,如圖5.20所示,因為設置了SizeMode屬性值為StretchImage,所以圖片能自動根據(jù)圖片框的大小填滿整個圖片框。用鼠標單擊圖片框,圖片將從圖片框中刪除,如圖5.21所示。圖5.20裝入圖片圖5.21刪除圖片任務9:使用對話框(Dialog)如果需要OpenFileDialog、SaveFileDialog、FontDialog、ColorDialog、PrintDialog、PrintPreviewDialog等控件。這些控件在VB.NET與Commdlg.dll例程間提供接口,分別對應打開、保存、字體、顏色、打印和打印預覽對話框。運行時只要調用這些控件的ShowDialog方法即可彈出相應的對話框。打開文件對話框(OpenFileDialog)相關知識OpenFileDialog控件提供一個標準的打開文件對話框。其中可以指定驅動器、文件夾、文件類型和文件名。OpenFileDialog控件的常用屬性見表5.16。OpenFileDialog控件最常用的方法是ShowDialog方法,最常用的事件是FileOK事件,其他方法和事件見表5.17。表5.16

OpenFileDialog控件的常用屬性(續(xù)表)

表5.17

OpenFileDialog控件的方法和事件當在程序中調用OpenFileDialog控件的ShowDialog方法時,將顯示“打開”對話框(見圖5.22)。圖5.22“打開”對話框OpenFileDialog控件本身并不能打開和讀入文件,它需要使用Stream類來實現(xiàn)打開和讀入文件的操作,Stream類將在后續(xù)章節(jié)中講解。以下示例創(chuàng)建一個OpenFileDialog,設置幾個屬性,并用ShowDialog顯示“打開”對話框,利用Stream類將選定的文件讀入到文本框中。界面設計:如圖5.23所示,在窗體上放置1個文本框,設置其Multiline屬性為True;放置1個按鈕,設置其Text屬性為open;放置1個打開文件對話框。要求程序運行后,單擊“open”按鈕,自動打開對話框,選擇文本文件后,將該文本文件的內容讀取到文本框中。圖5.23設計界面任務實現(xiàn)9-1:打開文本文件OpenFileDialog控件的Fileter屬性的設定方法如下:篩選器說明|篩選器模式對于每個篩選項,篩選器字符串都包含篩選器說明,后接一垂直線條(|)和篩選器模式。不同篩選項的字符串由垂直線條隔開。下面是篩選器字符串的一個示例:OpenFileDialog1.Fileter="文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"通過用分號分隔各種文件類型,可以將多個篩選器模式添加到篩選器中。例如,“圖像文件(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|所有文件(*.*)|*.*”篩選器字符串,可以篩選出擴展名是BMP、JPG、GIF的圖像文件和所有文件。程序中,在按鈕的Click事件中只設置了OpenFileDialog控件的有關屬性,并調用該控件的ShowDialog方法,至于打開文件后如何處理則放在OpenFileDialog控件的FileOk事件中。程序運行后,單擊“open”按鈕,將打開如圖5.22所示的對話框,選擇桌面上的test.txt文件后,單擊“打開”按鈕,則text.txt文件的內容將被讀出,并顯示在文本框中,如圖5.24所示。圖5.24讀出文件內容后的界面保存文件對話框(SaveFileDialog)相關知識SaveFileDialog控件與OpenFileDialog控件類似,它用于保存文件。SaveFileDialog控件的屬性也與OpenFileDialog控件類似,但它也有其專用的屬性。表5.18是SaveFileDialog控件的常用屬性。SaveFileDialog控件的方法與事件和OpenFileDialog控件的方法與事件相同,這里不再贅述。和OpenFileDialog控件一樣,SaveFileDialog控件本身不能保存文件,要寫入文件,必須使用Stream類。在任務11-1的基礎上增加1個SaveFileDialog控件和按鈕,設置按鈕的Text屬性為Save保存。程序代碼如下:PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesButton2.ClickSaveFileDialog1.Filter="txtfiles(*.txt)|*.txt|Allfiles(*.*)|*.*"SaveFileDialog1.FilterIndex=2SaveFileDialog1.RestoreDirectory=TrueSaveFileDialog1.ShowDialog()EndSub任務實現(xiàn)9-2:保存文本文件圖5.25程序運行界面圖5.26“另存為”對話框程序中,Save按鈕的Click事件中只設置了SaveFileDialog控件的有關屬性,并調用了該控件的ShowDialog方法,至于輸入或選擇文件后如何處理則放在SaveFileDialog控件的FileOk事件中。程序運行后的界面如圖5.25所示,打開文件后修改文本框中的內容,然后單擊“Save”按鈕,彈出“另存為”對話框如圖5.26所示。

顏色對話框(ColorDialog)相關知識ColorDialog控件用于顯示顏色對話框,以便用戶為窗體的其他對象設置顏色,ColorDialog控件允許用戶選擇48種顏色,如圖5.27所示。當用戶選擇“規(guī)定自定義顏色”按鈕時,將可以自己調整16種自定義顏色的設置,以滿足需求。圖5.27“顏色”對話框ColorDialog控件常用的屬性見表5.19。表5.19

ColorDialog控件的常用屬性ColorDialog控件的常用方法是Reset方法和ShowDialog方法。它的常用事件是HelpRequest事件。調用ColorDialog控件的ShowDialog方法時,根據(jù)用戶選擇的是“確定”按鈕還是“取消”按鈕,還是返回DialogResult為OK或Cancel。任務實現(xiàn)9-3:改變文本框顏色界面設計:在例5.12的基礎上增加1個ColorDialog控件和按鈕,設置按鈕的Text屬性為Color,見圖5.28。編程實現(xiàn),當單擊“color”按鈕時,能改變文本框的背景色。程序代碼如下:PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesButton3.ClickIfColorDialog1.ShowDialog()=DialogResult.OKThen '調用顏色對話框TextBox1.BackColor=ColorDialog1.Color'改變文本框的背景顏色EndIfEndSub圖5.28設計時的界面程序運行后,單擊“color”按鈕,彈出“顏色”對話框,并根據(jù)用戶選擇的顏色改變文本框的背景色,如圖5.29所示。圖5.29“顏色”對話框和改變了背景色的文本框字體對話框(FontDialog)相關知識FontDialog控件顯示字體對話框,在一個用戶熟悉的標準對話框中顯示可用的字體列表,用戶可以根據(jù)需要為窗體上的其他對象選擇合適的字體。FontDialog控件的常用屬性見表5.20。(續(xù)表)

FontDialog控件的常用方法是ShowDialog方法和Reset方法,常用的事件是Apply事件。當單擊對話框中的“應用”按鈕時觸發(fā)該事件。界面設計:在上一任務的基礎上增加1個FontDialog控件;再增加1個按鈕,設置按鈕的Text屬性為Font,見圖5.30。編程實現(xiàn),當單擊“Font”按鈕時,能改變文本框中的字體。圖5.30設計時的界面任務實現(xiàn)9-4:字體對話框示例。程序運行后,單擊“Font”按鈕,將彈出“字體”對話框,如圖5.31所示。選擇適當?shù)淖煮w后單擊“應用”按鈕或“確定”按鈕,均可改變文本框中的字體及其顏色。程序改變字體前后的界面如圖5.32所示。圖5.31“字體”對話框類似地,讀者還可以根據(jù)需要,選用其他的公用對話框,如打印對話框、頁面設置對話框、打印預覽對話框等。圖5.32字體改變前后的界面任務10:使用鼠標和鍵盤事件第1章中已經(jīng)對事件的概念做了描述,事件的種類很多,要掌握所有的事件不是一件容易的事,本節(jié)將介紹VB.NET中最常用的兩大類事件:鼠標事件和鍵盤事件。鼠標事件

鼠標事件是VB.NET中最常用的事件,它是由鼠標觸發(fā)的。鼠標事件包括Click、DoubleClick、MouseMove、MouseDown、MouseUp等,本章的許多例子已經(jīng)用到了鼠標的相關事件。表5.21列出了鼠標事件及觸發(fā)條件對應表。表5.21鼠標事件及觸發(fā)條件對應表在窗體中放置1個文本框和1個標簽按鈕,設置文本框的ScrollBars屬性為Vertical,Multiline屬性為True,給Label1的鼠標事件編寫以下程序。每一種事件觸發(fā)后都將在文本框中顯示該事件名稱,從中可以看出單擊鼠標和雙擊鼠標時事件的執(zhí)行順序。圖5.33顯示了雙擊Label1控件后的事件順序。Label1對象的幾種鼠標事件程序:PrivateSubLabel1_MouseDown(ByValsenderAsObject,ByValeAs_System.Windows.Forms.MouseEventArgs)HandlesLabel1.MouseDownTextBox1.Text=TextBox1.Text&"MouseDown事件"&vbCrLfEndSubPrivateSubLabel1_MouseUp(ByValsenderAsObject,ByValeAs_System.Windows.Forms.MouseEventArgs)HandlesLabel1.MouseUpTextBox1.Text=TextBox1.Text&"MouseUp事件"&vbCrLfEndSub任務實現(xiàn)10-1:鼠標事件的測試鼠標事件還能檢測出按下和釋放的是哪個鍵,還能檢測鼠標當前的位置。在鼠標事件中,要確定鼠標的位置或鼠標的哪個鍵在操作,必須通過鼠標事件中的對象參數(shù)e的有關屬性來識別。該對象參數(shù)具有Button屬性和X,Y屬性,Button屬性返回鼠標的鍵值,X,Y屬性返回鼠標的位置。PrivateSubLabel1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)_HandlesLabel1.ClickTextBox1.Text=TextBox1.Text&"Click事件"&vbCrLfEndSubPrivateSubLabel1_DoubleClick(ByValsenderAsObject,ByValeAsSystem.EventArgs)_HandlesLabel1.DoubleClickTextBox1.Text=TextBox1.Text&"DoubleClick事件"&vbCrLfEndSub本示例程序通過對象參數(shù)e,實現(xiàn)如下功能:當在文本框中按住鼠標左鍵移動時,將顯示鼠標在文本框中的相對位置,并把位置的X,Y坐標顯示在文本框中。程序運行時,文本框中的內容會隨著鼠標的移動而變化。運行界面見圖5.34。圖5.33雙擊Label1控件后的界面圖5.34運行界面任務實現(xiàn)10-2:鼠標事件對象e的測試鍵盤事件鍵盤事件也是VB.NET中最常用的事件,它是由鍵盤觸發(fā)的。鍵盤事件包括KeyDown、KeyUp和KeyPress等事件,分別代表鍵被按下、鍵彈起和一個完整的按鍵事件。KeyDown和KeyUp事件中,可以通過對象參數(shù)e的Keycode屬性或KeyData屬性來捕獲用戶按下的是哪個鍵,也可以通過e參數(shù)的Alt、Control和Shift屬性來判定用戶是否按下了功能鍵。KeyPress事件中,可以通過對象參數(shù)e的KeyChar屬性來判定用戶的按鍵。例5.10中就用到了鍵盤的KeyPress事件,程序代碼如下:PrivateSubTextBox1_KeyPress(ByValsenderAsObject,ByValeAs_System.Windows.Forms.KeyPressEventArgs)HandlesTextBox1.KeyPressIfe.KeyChar=Chr(13)ThenPictureBox2.Image=System.Drawing.Image.FromFile(TextBox1.Text)EndIfEndSub該事件中通過對象參數(shù)e的KeyChar屬性,判定用戶是否按下了回車鍵。如果按下了回車鍵,則給圖片框裝上以文本中內容為文件名的圖片。學生訓練:利用滾動條實現(xiàn)圖片的滾動顯示通過前面的學習,讀者已經(jīng)可以利用適當?shù)目丶M合,結合事件編程和一定的算法,實現(xiàn)比較復雜的程序設計。界面設計: 在窗體中放置2個滾動條、1個Panel控件、1個放置在Panel控件中的圖片框。給圖片框選擇一幅圖片,圖片的尺寸比顯示區(qū)域大,采用滾動條,使圖片能在顯示區(qū)域中滾動顯示。界面控件的屬性如表5.22所示。運行界面如圖5.35所示。利用滾動條可以實現(xiàn)圖片的滾動顯示。表5.22窗體中控件屬性表程序代碼如下:PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_Handle

溫馨提示

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

評論

0/150

提交評論