




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章WinForms控件6.1單選按鈕 6.2圖片框
6.3選項(xiàng)卡控件
6.4滾動(dòng)條
6.5進(jìn)度條
6.6其他高級(jí)控件(定時(shí)器、打印等控件)
6.7自定義控件
6.8綜合案例:隨機(jī)數(shù)游戲
本章小結(jié)
練習(xí)與作業(yè)
上機(jī)部分(六)
學(xué)習(xí)目標(biāo)●單選控件、圖片框控件、選項(xiàng)卡控件●滾動(dòng)條、進(jìn)度條控件●定時(shí)器控件●使用控件創(chuàng)建Windows應(yīng)用程序●創(chuàng)建和使用自定義控件6.1單選按鈕單選按鈕RadioButton控件用于為要提供給用戶的每個(gè)選項(xiàng)顯示單選框。然后,用戶可以通過(guò)單擊與所需選項(xiàng)相對(duì)應(yīng)的單選框來(lái)表明他們的選擇。注意,用戶一次只能選擇一個(gè)選項(xiàng)。RadioButton在工具箱中的圖標(biāo)是。表6-1列出了RadioButton控件支持的屬性、方法和事件。如果要對(duì)單選按鈕進(jìn)行分組,可以使用GroupBox控件,這樣在同一個(gè)窗體上就可以同時(shí)對(duì)多個(gè)RadioButton按鈕進(jìn)行分組選擇了,具體效果如圖6-1所示。表6-1RadioButton的屬性、方法和事件圖6-1分組后的RadioButton【例6-1】下面舉一個(gè)簡(jiǎn)單例子來(lái)說(shuō)明如何獲得用戶單擊單選按鈕的值,步驟如下:
(1)首先創(chuàng)建一個(gè)WinForm程序,窗體Form1的設(shè)計(jì)界面如圖6-2所示。注意,將單選按鈕【男】的Checked屬性設(shè)置為T(mén)rue。
(2)然后雙擊Button,進(jìn)入Click事件并輸入以下代碼:
privatevoidbutton1_Click(objectsender,System.EventArgse) { stringstr=""; if(this.radioButton1.Checked) str+="男"; else str+="女"; MessageBox.Show(str); }(3)保存并運(yùn)行程序,結(jié)果如圖6-3所示。圖6-2設(shè)計(jì)界面圖6-3運(yùn)行結(jié)果6.2圖片框
PictureBox控件用于顯示圖像。圖像的類型可以是BMP、JPEG、GIF、PNG、圖元文件或圖標(biāo)。表6-2列出了PictureBox控件支持的屬性和事件。PictureBox在工具箱中的圖標(biāo)是。
SizeMode屬性使用PictureBoxSizeMode枚舉確定圖像在控件中的大小和位置。SizeMode屬性可以是AutoSize、CenterImage、Normal和StretchImage。
默認(rèn)情況下,PictureBox控件在顯示時(shí)沒(méi)有任何邊框。即使圖片框不包含任何圖象,仍可使用BorderStyle屬性為其提供一個(gè)標(biāo)準(zhǔn)或三維的邊框。要加載PictureBox,首先創(chuàng)建一個(gè)基于Image的對(duì)象。例如,要把JPEG文件加載到PictureBox中,需要編寫(xiě)如下代碼:
BitmapmyJpeg=newBitmap("mypic.jpg");pictureBox1.Image=(Image)myJpeg;
注意需要轉(zhuǎn)換回Image類型,因?yàn)檫@是Image屬性所要求的。表6-2PictureBox的屬性、方法和事件
【例6-2】
下面舉一個(gè)簡(jiǎn)單例子說(shuō)明如何在PictureBox中動(dòng)態(tài)顯示一張圖片,步驟如下:
(1)首先創(chuàng)建一個(gè)WinForm程序,窗體Form1的設(shè)計(jì)界面如圖6-4所示。注意,PictureBox的SizeMode屬性設(shè)置為StretchImage。
(2)然后雙擊Button,進(jìn)入Click事件并輸入以下代碼:
privatevoidbutton1_Click(objectsender,EventArgse){BitmapmyJpeg=newBitmap(@"C:\Image\love.jpg");pictureBox1.Image=(Image)myJpeg;}(3)保存并運(yùn)行程序,結(jié)果如圖6-5所示。圖6-4設(shè)計(jì)界面圖6-5運(yùn)行結(jié)果6.3選?項(xiàng)?卡?控?件
TabControl允許把相關(guān)的組件組合到一系列Tab頁(yè)面上,它在工具箱中的圖標(biāo)是。TabControl管理TabPages集合。圖6-6是一個(gè)設(shè)計(jì)時(shí)的選項(xiàng)卡控件,其中選定的是該控件的TabControl部分,這個(gè)TabControl中共有兩個(gè)TabPage頁(yè),每個(gè)TabPage頁(yè)可以用作控件的容器。表6-3列出了TabControl控件支持的屬性、方法和事件。有幾個(gè)屬性可以控制TabControl的外觀。Appearance屬性使用TabAppearance枚舉來(lái)確定Tab的外觀。其值是FlatButtons、Buttons或Normal。Multiline屬性的值是一個(gè)布爾值,確定是否顯示多行Tab。如果Multiline屬性設(shè)置為False,而有多個(gè)Tab不能一次顯示出來(lái),就提供一組箭頭,允許用戶滾動(dòng)查看剩余的Tab。圖6-6設(shè)計(jì)環(huán)境下的TabControl表6-3TabControl控件支持的屬性、方法和事件TabPage的Text屬性是在Tab上顯示的內(nèi)容。Text屬性也在重寫(xiě)的構(gòu)造函數(shù)中用作參數(shù)。一旦創(chuàng)建了TabPage控件,它基本上就是一個(gè)容器控件,用于放置其他控件。VisualStudio.NET中的設(shè)計(jì)器使用集合編輯器,很容易給TabControl控件添加TabPage控件。在添加每個(gè)頁(yè)面時(shí)都可以設(shè)置各種屬性。接著把其他子控件拖放到每個(gè)TabPage控件上。通過(guò)查看SelectedTab屬性可以確定當(dāng)前的Tab。每次選擇新Tab時(shí),都會(huì)引發(fā)SelectedIndex事件。通過(guò)監(jiān)聽(tīng)SelectedIndex屬性,再用SelectedTab屬性確認(rèn)當(dāng)前Tab,就可以根據(jù)每個(gè)Tab進(jìn)行特定的處理?!纠?-3】下面舉一個(gè)簡(jiǎn)單例子說(shuō)明如何在TabControl中動(dòng)態(tài)添加控件,步驟如下:
(1)首先創(chuàng)建一個(gè)WinForm程序,窗體Form1的設(shè)計(jì)界面如圖6-7所示。
(2)然后雙擊窗體,進(jìn)入Form1_Load事件并輸入以下代碼:
privatevoidForm1_Load(objectsender,EventArgse){this.tabPage1.Text="系統(tǒng)信息";this.tabPage2.Text="幫助";Labellabel1=newLabel();Labellabel2=newLabel();Buttonbutton1=newButton();label1.Text="計(jì)算機(jī)名:"+Environment.MachineName;label2.Text="操作系統(tǒng):"+Environment.OSVersion.Platform.ToString();label1.Location=newPoint(10,10);label2.Location=newPoint(10,50);button1.Text="確定";button1.Click+=newEventHandler(button1_Click);button1.Location=newPoint(10,100);tabPage1.Controls.Add(label1);tabPage1.Controls.Add(label2);tabPage1.Controls.Add(button1);}voidbutton1_Click(objectsender,EventArgse){Application.Exit();}
在上面的代碼段中,動(dòng)態(tài)創(chuàng)建了兩個(gè)Label控件和一個(gè)Button控件,對(duì)其設(shè)置屬性后添加到TabPage1的控件集合中。同時(shí),對(duì)Button控件的Click事件和方法button1_Click進(jìn)行了預(yù)定,這樣,當(dāng)單擊該Button時(shí),將退出程序。
(3)保存并運(yùn)行程序,結(jié)果如圖6-8所示。圖6-7設(shè)計(jì)界面圖6-8運(yùn)行結(jié)果6.4滾動(dòng)條
WinForms支持的滾動(dòng)條有兩種類型:HScrollBar和VScrollBar。HScrollBar表示水平滾動(dòng)條,在工具箱中的圖標(biāo)是,VScrollBar表示垂直滾動(dòng)條,在工具箱中的圖標(biāo)是??捎脻L動(dòng)條控件為用戶輸入數(shù)值數(shù)據(jù),該數(shù)據(jù)可以在控件中顯示,也可以在代碼中使用。表6-4列出了ScrollBar控件支持的屬性和事件。滾動(dòng)條的Value屬性(默認(rèn)值為0)是與滑塊在滾動(dòng)條中的位置相對(duì)應(yīng)的一個(gè)整數(shù)值。當(dāng)滑塊的位置值最小時(shí),滑塊移到最左端(HScrollBar)或最頂端(VScrollBar);當(dāng)滑塊的位置值最大時(shí),滑塊移到最右端(HScrollBar)或最底端(VScrollBar)。Value屬性的值總是在用戶設(shè)置的Maximum屬性和Minimum屬性的范圍之內(nèi)。表6-4ScrollBar支持的屬性和事件
當(dāng)用戶在滾動(dòng)條的任何一邊單擊軌跡或按下PgUp/PgDn時(shí),Value屬性將按照LargeChange屬性中設(shè)置的值而更改;當(dāng)用戶按下某一箭頭或使用箭頭鍵時(shí),Value屬性將按照SmallChange屬性中設(shè)置的值而更改;
【例6-4】下面舉一個(gè)簡(jiǎn)單例子來(lái)說(shuō)明如何使用滾動(dòng)條控件,步驟如下:
(1)首先創(chuàng)建一個(gè)WinForm程序,窗體的設(shè)計(jì)界面如圖6-9所示。
(2)按照表6-5中所示設(shè)置控件Label的屬性。圖6-9設(shè)計(jì)界面表6-5Label屬性設(shè)置(3)雙擊界面,進(jìn)入Form_Load事件,添加如下代碼:
privatevoidForm1_Load(objectsender,System.EventArgse){ hScrollBar1.Maximum=hScrollBar1.Width; label1.Width=hScrollBar1.Minimum;}(4)雙擊滾動(dòng)條,進(jìn)入Scroll事件,添加如下代碼:
privatevoidhScrollBar1_Scroll(objectsender,System.Windows.Forms.ScrollEventArgse){ label1.Width=hScrollBar1.Value;}(5)保存并運(yùn)行該程序,當(dāng)用戶移動(dòng)滾動(dòng)條時(shí),Label的寬度也會(huì)隨之改變。運(yùn)行結(jié)果如圖6-10所示。圖6-10運(yùn)行結(jié)果6.5進(jìn)度條
ProgressBar控件是較長(zhǎng)操作的狀態(tài)的可視化表示,它在水平欄中顯示相應(yīng)數(shù)目的矩形,當(dāng)操作完成時(shí),該欄會(huì)被填滿。使用它可以指示計(jì)算機(jī)正在進(jìn)行某個(gè)操作,用戶應(yīng)等待。該控件在工具箱中的圖標(biāo)為。表6-6列出了ScrollBar控件支持的屬性和方法。
ProgressBar控件工作時(shí)要設(shè)置Minimum和Maximum屬性。這些屬性對(duì)應(yīng)于進(jìn)度指示器的最左端(Minimum)和最右端(Maximum)。設(shè)置Step屬性,以確定每次調(diào)用PerformStep方法時(shí)數(shù)值的增量。還可以使用Increment方法,遞增在方法調(diào)用中傳入的值。Value屬性返回ProgressBar的當(dāng)前值。表6-6ScrollBar的屬性和方法
可以使用Text屬性通知用戶已完成了操作的百分?jǐn)?shù)或還未處理的條目數(shù)。還有一個(gè)BackgroundImage屬性可以定制進(jìn)度條的外觀。
【例6-5】下面舉一個(gè)簡(jiǎn)單例子來(lái)說(shuō)明如何使用進(jìn)度條控件,步驟如下:
(1)首先創(chuàng)建一個(gè)WinForm程序,窗體的設(shè)計(jì)界面如圖6-11所示。圖6-11設(shè)計(jì)界面(2)雙擊【計(jì)算】按鈕,進(jìn)入Click事件,添加如下代碼:
privatevoidbutton1_Click(objectsender,EventArgse){intnum=Convert.ToInt32(textBox1.Text);intres=0;progressBar1.Maximum=num;for(inti=1;i<=num;i++){res=res+i;progressBar1.Increment(1);}MessageBox.Show("計(jì)算結(jié)果為:"+res.ToString());(3)保存并運(yùn)行該程序,運(yùn)行結(jié)果如圖6-12所示。圖6-12運(yùn)行結(jié)果6.6其他高級(jí)控件(定時(shí)器、打印等控件)WinForms所支持的某些控件具有特定的功能,其高級(jí)控件有Timer控件和打印支持控件。
1.Timer控件
Timer(定時(shí)器)控件是用來(lái)產(chǎn)生一定的時(shí)間間隔。在每個(gè)時(shí)間間隔中都可根據(jù)應(yīng)用程序的要求有相同或不同的事件或過(guò)程發(fā)生,Timer控件在工具箱中的圖標(biāo)為。表6-7列出了Timer控件支持的屬性、方法和事件。
Interval屬性是Timer控件最重要的屬性之一,它決定著事件或過(guò)程發(fā)生的時(shí)間間隔,Interval屬性以千分之一秒為基本單位,就是事件發(fā)生的最短間隔是一毫秒,但是這樣的時(shí)間間隔對(duì)系統(tǒng)的要求很高,因此按時(shí)間精度的要求適當(dāng)設(shè)置這個(gè)屬性也是工程運(yùn)行速度和可靠性的一種保證。表6-7Timer的屬性、方法和事件Enabled屬性可以設(shè)置Timer控件是否為激活狀態(tài),一旦這個(gè)屬性為False,那么Timer控件將失去作用。反之,如果在某個(gè)條件下將這個(gè)屬性設(shè)置為T(mén)rue,Timer控件將會(huì)被激活,事件和過(guò)程將間隔發(fā)生。
使用Tick事件時(shí),可用此事件在每次Timer控件時(shí)間間隔過(guò)去之后通知程序應(yīng)該做什么,Interval屬性指定Tick事件之間的間隔。無(wú)論何時(shí),只要Timer控件的Enabled屬性被設(shè)置為T(mén)rue,而且Interval屬性大于0,則Tick事件以Interval屬性指定的時(shí)間間隔發(fā)生。
【例6-6】下例將實(shí)現(xiàn)電子時(shí)鐘的效果。其中Label1為一個(gè)標(biāo)簽,Timer1為一個(gè)定時(shí)器控件,運(yùn)行效果圖6-13所示。圖6-13運(yùn)行效果
在設(shè)計(jì)時(shí),將Timer1的Enabled屬性設(shè)置為T(mén)rue,Interval屬性設(shè)置為1000。并在Tick事件中添加如下代碼:
privatevoidtimer1_Tick(objectsender,System.EventArgse) { this.label1.Text=DateTime.Now.ToLongTimeString(); }2.打印支持控件打印支持控件主要有PrintDocument(打印文檔)和PrintPreviewControl(打印預(yù)覽)控件。下面分別講解這兩個(gè)控件并給出一個(gè)示例。1)?PrintDocument控件
PrintDocument(打印文檔)控件用于設(shè)置描述打印內(nèi)容和打印文檔能力的屬性,PrintDocument控件的兩種主要情況是:
(1)簡(jiǎn)單的打印作業(yè),如打印單個(gè)文本文件。在該控件的PrintPage事件處理程序中添加打印文件的編程邏輯,該編程邏輯應(yīng)以使用Print方法打印文檔結(jié)束。
(2)更為復(fù)雜的打印作業(yè),如想要重新使用已編寫(xiě)的打印邏輯的情況。在這種情況下,應(yīng)從PrintDocument控件派生一個(gè)新組件,并重寫(xiě)PrintPage事件。
2)?PrintPreviewControl控件
PrintPreviewControl(打印預(yù)覽)控件用于顯示PrintDocument控件打印時(shí)的外觀,該控件沒(méi)有按鈕或其他用戶界面元素。
該控件包含以下重要屬性:
(1)屬性Document,用于設(shè)置要預(yù)覽的文檔,文檔必須是PrintDocument對(duì)象。
(2)屬性Columns和Rows確定在控件上水平和垂直顯示的頁(yè)數(shù)。
【例6-7】下例將實(shí)現(xiàn)一個(gè)字符串的效果,實(shí)現(xiàn)步驟如下:
(1)在窗體上放置PrintDocument和PrintPreviewControl控件,如圖6-14所示。注意,PrintDocument在運(yùn)行時(shí)是不可視組件,將出現(xiàn)在下面的組件欄里。圖6-14設(shè)計(jì)頁(yè)面(2)接著,找到printDocument1的PrintPage事件,添加如下所示代碼:privatevoidprintDocument1_PrintPage(objectsender,System.Drawing.Printing.PrintPageEventArgse){ e.Graphics.DrawRectangle(Pens.Black,e.MarginBounds); e.Graphics.DrawString("HelloWorld!",newFont("宋體",50,FontStyle.Italic),Brushes.Black,160,125);}(3)在Form1_Load事件中,添加如下代碼。
privatevoidForm1_Load(objectsender,System.EventArgse){ printPreviewControl1.Document=printDocument1;}(4)保存并運(yùn)行程序,運(yùn)行效果如圖6-15所示:在上述代碼中,首先在PrintDocument控件的PrintPage事件中編寫(xiě)要打印的內(nèi)容,然后在窗體裝載時(shí)將打印預(yù)覽控件PrintPreviewControl的Document屬性賦值成已設(shè)置好打印內(nèi)容的文檔對(duì)象printDocument1。這樣,當(dāng)窗體運(yùn)行時(shí),我們就可以在打印預(yù)覽控件PrintPreviewControl中看到打印文檔PrintDocument中的內(nèi)容了。
圖6-15運(yùn)行頁(yè)面6.7自?定?義?控?件
WinForms為我們提供了大量的控件,這些控件可以滿足大多數(shù)應(yīng)用程序的要求。但是,有時(shí)我們需要能夠滿足特殊應(yīng)用程序中特定任務(wù)的要求的組件。這時(shí)“自定義控件”可以幫助解決問(wèn)題。從廣義上說(shuō),自定義控件是指用戶自己定制的控件,它分為兩類:一類是用戶控件,一類是狹義上的自定義控件。這兩類控件的區(qū)別是:用戶控件一般只在一個(gè)項(xiàng)目中實(shí)現(xiàn)重用,而自定義控件能夠在多個(gè)項(xiàng)目中重用。下面我們通過(guò)例子來(lái)看看如何創(chuàng)建這兩種不同類型的控件。6.7.1用戶控件我們可以創(chuàng)建登錄對(duì)話框,并將它保存為用戶控件,這樣,任何時(shí)候需要使用到它,只需將它從工具箱拖放到窗體上即可。要?jiǎng)?chuàng)建用戶控件,請(qǐng)執(zhí)行以下步驟:
(1)新建一個(gè)Windows應(yīng)用程序。
(2)在資源管理器中該項(xiàng)目方案上單擊右鍵,在彈出的菜單中選擇“Add”→“UserControl…”,添加用戶控件。
(3)從工具箱中為該用戶控件添加控件,進(jìn)行設(shè)計(jì)。
(4)在用戶控件的事件過(guò)程中編寫(xiě)代碼,以處理用戶控件可能會(huì)引發(fā)的事件。
(5)保存文件,關(guān)閉控件設(shè)計(jì)器。(6)生成項(xiàng)目,這樣,用戶控件會(huì)顯示在工具箱中。
(7)按照添加一般控件的通用方式,將用戶控件添加到窗體中。
【例6-8】
下面將實(shí)現(xiàn)一個(gè)注冊(cè)時(shí)判斷用戶輸入的密碼是否一致的控件,按照上面所講的步驟,新建一個(gè)Windows程序FirstWindowsApplication,并添加一個(gè)自定義控件Login,其顯示效果如圖6-16所示。圖6-16設(shè)計(jì)界面
接著,為該用戶控件添加如下代碼:
privatevoidtextBox2_Validating(objectsender,System.ComponentModel.CancelEventArgse){ if(textBox1.Text.Trim()!=textBox2.Text.Trim()) MessageBox.Show("密碼輸入不一致!");}privatevoidtextBox1_Validating(objectsender,System.ComponentModel.CancelEventArgse){ if(textBox1.Text.Trim()!=textBox2.Text.Trim()) MessageBox.Show("密碼輸入不一致!");}
在上述代碼中,對(duì)用戶輸入的文本進(jìn)行判斷。當(dāng)用戶將光標(biāo)從任何一個(gè)TextBox中移開(kāi)時(shí),將觸發(fā)Validating事件。該事件將對(duì)兩個(gè)文本框中的內(nèi)容是否一致進(jìn)行判斷,并彈出提示消息。最后,當(dāng)關(guān)閉控件設(shè)計(jì)頁(yè)面并生成項(xiàng)目后,我們可以從工具箱的“FirstWindows-Application”選項(xiàng)卡中找到該Login控件并使用它,如圖6-17所示。圖6-17用戶控件開(kāi)發(fā)環(huán)境6.7.2自定義控件自定義控件的創(chuàng)建過(guò)程稍微復(fù)雜一些。一般來(lái)說(shuō),創(chuàng)建的第一步就是選取一個(gè)基類?;惖倪x擇如下:
(1)已有控件類:最常用的自定義控件是那些對(duì)已有控件的行為只進(jìn)行很小改動(dòng)的控件。如果希望一個(gè)控件的行為與TextBox相似,那么就可以從TextBox中來(lái)繼承并進(jìn)行改進(jìn)。
(2)?System.Windows.Forms.Control:為自定義控件,使用這個(gè)基類是為了使這個(gè)控件與窗體的其他控件相孤立。也就是說(shuō),這個(gè)基類封裝了一個(gè)存在對(duì)象顯示的窗口,并能接受鼠標(biāo)和鍵盤(pán)事件。
(3)?System.ComponentModel.Component:使用這個(gè)基類將不會(huì)封裝一個(gè)Win32窗口。使用這個(gè)基類的派生類將不會(huì)有用戶的接口。(4)?Object:所有類的最終基類都是Object。繼承它的優(yōu)點(diǎn)在于它提供了一個(gè)最輕量級(jí)的類。但這個(gè)類無(wú)法移植到桌面的?.NET框架下,因此較少使用。
【例6-9】采用第一種基類繼承方法來(lái)創(chuàng)建一個(gè)擴(kuò)展了的TextBox控件UltraTextBox。它具有如下特點(diǎn):●是普通文本框(TextBox)的兩倍?!裨讷@得焦點(diǎn)的時(shí)候其中文本被高亮顯示?!駥⑽谋咀鳛榇髮?xiě)字母保存。●提供一種方法,將文本作為小寫(xiě)字母來(lái)返回。要?jiǎng)?chuàng)建該控件,實(shí)現(xiàn)步驟如下:
(1)新建一個(gè)“Windows控件庫(kù)”項(xiàng)目CustomerControls。
(2)將實(shí)現(xiàn)控件的代碼文件改名為UltraTextBox.cs。(3)?UltraTextBox.cs的后臺(tái)代碼如下:
usingSystem;usingSystem.Windows.Forms;namespaceCustomerControls{ publicclassUltraTextBox:TextBox { publicUltraTextBox() //構(gòu)造函數(shù)
{
this.Width*=2; } protectedoverridevoidOnGotFocus(EventArgse) //重寫(xiě)方法{ base.OnGotFocus(e); this.SelectAll(); } publicoverridestringText //重寫(xiě)屬性
{ get { returnbase.Text; } set { value=value.ToUpper(); base.Text=value; }} publicstringToStringLower() //初始化方法
{ returnthis.Text.ToLower(); } }}(4)生成控件項(xiàng)目。
(5)按照添加一般控件的通用方式,將該控件添加到其他項(xiàng)目的窗體中即可。6.8綜合案例:隨機(jī)數(shù)游戲在這一節(jié)中,我們將開(kāi)發(fā)一個(gè)隨機(jī)數(shù)游戲——LuckySeven。同時(shí)學(xué)習(xí)如何使用時(shí)鐘控件和創(chuàng)建隨機(jī)數(shù)。具體的創(chuàng)建步驟如下:
(1)創(chuàng)建一個(gè)Windows應(yīng)用程序LuckySeven。
(2)設(shè)計(jì)如圖6-18所示的窗體界面。
(3)按照表6-8中所示設(shè)置控件的屬性。
(4)在窗體類中聲明三個(gè)整型變量,用于存放三個(gè)隨機(jī)數(shù)。
privateintd1,d2,d3;圖6-18設(shè)計(jì)界面表6-8相關(guān)控件屬性(5)雙擊Timer控件,在Tick事件中輸入如下代碼:
privatevoidtimer1_Tick(objectsender,System.EventArgse) { Randomrnd=newRandom(); d1=rnd.Next(10); d2=rnd.Next(10); d3=rnd.Next(10); lblFirst.Text=d1.ToString(); lblSecond.Text=d2.ToString(); lblThird.Text=d3.ToString(); }
注意,創(chuàng)建隨機(jī)數(shù)我們使用的是Random類的對(duì)象。采用rnd.Next(10)方法將獲得10以內(nèi)(0~9)的隨機(jī)整數(shù)。(6)雙擊【開(kāi)始】按鈕,在Click事件中輸入如下代碼:
privatevoidbtnStart_Click(objectsender,System.EventArgse) { timer1.Enabled=true; btnStart.Enabled=false; btnStop.Enabled=true; }(7)雙擊【結(jié)束】按鈕,在Click事件中輸入如下代碼:
privatevoidbtnStop_Click(objectsender,System.EventArgse) { timer1.Enabled=false; btnStart.Enabled=true; btnStop.Enabled=false;if(d1==7||d2==7||d3==7) { MessageBox.Show("恭喜你,中獎(jiǎng)了!"); } }(8)保存并運(yùn)行應(yīng)用程序,查看效果。本章小結(jié)
單選按鈕RadioButton控件用于給用戶的每個(gè)選項(xiàng)顯示單選框。
PictureBox控件用于顯示圖像。
TabControl允許把相關(guān)的組件組合到一系列Tab頁(yè)面上。
WinForms支持的滾動(dòng)條有兩種類型:HScrollBar和VScrollBar。
ProgressBar控件是較長(zhǎng)操作的狀態(tài)的可視化表示。
WinForms所支持的某些控件具有特定的功能,其高級(jí)控件有Timer控件和打印支持控件。
自定義控件是指用戶自己定制的控件,分為兩類:用戶控件和自定義控件。練習(xí)與作業(yè)一、選擇題
1.使用PictureBox顯示圖片時(shí),要想讓圖片大小調(diào)整到PictureBox控件大小,則需將SizeMode屬性設(shè)置為()。
A.?AutoSize B.?CenterImage C.?Normal D.?StretchImage2.要設(shè)置當(dāng)用戶點(diǎn)擊滾動(dòng)條箭頭按鈕時(shí)滑塊移動(dòng)的大小,可以設(shè)置的屬性是()。
A.?Maximum B.?Minimum C.?LargeChange D.?SmallChange3.Timer的()事件在每個(gè)時(shí)間間隔內(nèi)被重復(fù)激發(fā)。A.
Click B.
Tick C.
ServerTick D.
ServerClick4.要預(yù)覽打印內(nèi)容,必須設(shè)置PrintPreviewControl控件的()屬性。A.
Text B.
Label
C.
Document D.
PrintText5.要?jiǎng)?chuàng)建一個(gè)自定義的Button控件,最好的方法是()。
A.繼承Button類并進(jìn)行擴(kuò)展
B.繼承UserControl類并進(jìn)行擴(kuò)展
C.繼承Control類并進(jìn)行擴(kuò)展
D.繼承Object類并進(jìn)行擴(kuò)展
二、編程題
1.創(chuàng)建一個(gè)Windows應(yīng)用程序,使用戶可以創(chuàng)建和打印賀卡。窗體通過(guò)TextBox接受用戶輸入的祝愿人姓名和問(wèn)候語(yǔ),并在打印預(yù)覽PrintPreviewControl中瀏覽該卡片。
2.創(chuàng)建一個(gè)圖片瀏覽器程序,當(dāng)用戶輸入想要瀏覽的圖片的路徑后,從窗體的PictureBox中裝載并顯示該圖片。上機(jī)部分(六)
實(shí)訓(xùn)目標(biāo)學(xué)會(huì)使
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江職業(yè)學(xué)院《司法法律社會(huì)工作》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆大學(xué)《水資源系統(tǒng)分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海立信會(huì)計(jì)金融學(xué)院《數(shù)據(jù)挖掘與智能分析雙語(yǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西旅游職業(yè)學(xué)院《用戶界面設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧省交通高等專科學(xué)?!堆b飾工程計(jì)量與計(jì)價(jià)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東茂名農(nóng)林科技職業(yè)學(xué)院《建筑設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東舞蹈戲劇職業(yè)學(xué)院《基礎(chǔ)醫(yī)學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年福建省安全員考試題庫(kù)及答案
- 廣西工業(yè)職業(yè)技術(shù)學(xué)院《器樂(lè)合奏2》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025貴州省安全員-B證考試題庫(kù)附答案
- 重慶市2024年小升初語(yǔ)文模擬考試試卷(含答案)
- 2024智慧城市數(shù)據(jù)采集標(biāo)準(zhǔn)規(guī)范
- 【人教版】《勞動(dòng)教育》七上 勞動(dòng)項(xiàng)目一 疏通廚房下水管道 課件
- 2024特斯拉的自動(dòng)駕駛系統(tǒng)FSD發(fā)展歷程、技術(shù)原理及未來(lái)展望分析報(bào)告
- 2024-2030年中國(guó)銀行人工智能行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- 五屆全國(guó)智能制造應(yīng)用技術(shù)技能大賽數(shù)字孿生應(yīng)用技術(shù)員(智能制造控制技術(shù)方向)賽項(xiàng)實(shí)操樣題
- 中國(guó)銀行中銀數(shù)字服務(wù)(南寧)有限公司招聘筆試真題2023
- 2024七年級(jí)英語(yǔ)下冊(cè) Module 1 Lost and found教案(新版)外研版
- 2024年公共衛(wèi)生基本知識(shí)考試題庫(kù)(附含答案)
- 如何正確運(yùn)用邏輯推理和論證方法撰寫(xiě)文章
- 《垃圾發(fā)電廠爐渣處理技術(shù)規(guī)范》
評(píng)論
0/150
提交評(píng)論