第9章 Windows窗體應(yīng)用程序開(kāi)發(fā)_第1頁(yè)
第9章 Windows窗體應(yīng)用程序開(kāi)發(fā)_第2頁(yè)
第9章 Windows窗體應(yīng)用程序開(kāi)發(fā)_第3頁(yè)
第9章 Windows窗體應(yīng)用程序開(kāi)發(fā)_第4頁(yè)
第9章 Windows窗體應(yīng)用程序開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第9章Windows窗體應(yīng)用(yìngyòng)程序開(kāi)發(fā)共九十六頁(yè)本章要點(diǎn)

Windows窗體開(kāi)發(fā)基礎(chǔ)常用Windows控件

Windows菜單設(shè)計(jì)(shèjì)工具欄與狀態(tài)欄設(shè)計(jì)通用對(duì)話框編程共九十六頁(yè)9.1Windows窗體編程

9.1.1WinForms概述(ɡàishù)控件可視化界面(jièmiàn)組件統(tǒng)稱為控件共九十六頁(yè)程序執(zhí)行流程(liúchéng)控制模式:過(guò)程(guòchéng)控制模式(非圖形用戶界面應(yīng)用程序的傳統(tǒng)控制模式)事件驅(qū)動(dòng)模式(Windows圖形用戶界面應(yīng)用程序的控制模式)9.1.1WinForms概述共九十六頁(yè)“開(kāi)始(kāishǐ)”

“程序”

“MicrosoftVisualStudio.NET2008”

“MicrosoftVisualStudio.NET2008”9.1.1WinForms概述(ɡàishù)共九十六頁(yè)9.1.1WinForms概述(ɡàishù)設(shè)計(jì)(shèjì)窗口共九十六頁(yè)各種(ɡèzhǒnɡ)控件屬性(shǔxìng)放置控件的區(qū)域共九十六頁(yè)usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespaceWindowsApplication3{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}}}提供了大量繪圖工具(gōngjù)的訪問(wèn)權(quán)限基礎(chǔ)核心(héxīn)命名空間ArrayList、BitArray、Hashtable、Stack、StringCollection和StringTable類大量窗體和控件從

System.Windows.Forms.Form派生VisualStudio.NET生成的代碼9.1.1WinForms概述共九十六頁(yè)partialclassForm1{///<summary>///必需的設(shè)計(jì)(shèjì)器變量。

///</summary>privateSystem.ComponentModel.IContainercomponents=null;

構(gòu)造(gòuzào)函數(shù)調(diào)用

InitializeComponent()

方法

#regionWindows窗體設(shè)計(jì)器生成的代碼

///<summary>///設(shè)計(jì)器支持所需的方法-不要

///使用代碼編輯器修改此方法的內(nèi)容。

///</summary>privatevoidInitializeComponent(){this.SuspendLayout();////Form1//this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,12F);this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.ClientSize=newSystem.Drawing.Size(333,266);this.Name="Form1";this.Text="Form1";this.ResumeLayout(false);}#endregion項(xiàng)目的容器9.1.1WinForms概述共九十六頁(yè)///<summary>///清理所有正在使用的資源。

///</summary>///<paramname="disposing">如果應(yīng)釋放托管(tuōguǎn)資源,為true;否則為false。</param>protectedoverridevoidDispose(booldisposing){if(disposing&&(components!=null)){components.Dispose();}base.Dispose(disposing);} 釋放(shìfàng)系統(tǒng)資源9.1.1WinForms概述共九十六頁(yè)staticclassProgram{///<summary>///應(yīng)用程序的主入口(rùkǒu)點(diǎn)。

///</summary>[STAThread]staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());}}程序(chéngxù)的主入口點(diǎn)9.1.1WinForms概述共九十六頁(yè)標(biāo)簽(biāoqiān)按鈕組合(zǔhé)框列表框文本框9.1.1WinForms概述共九十六頁(yè)(1)創(chuàng)建窗體(2)為窗體添加控件(3)設(shè)計(jì)控件在窗體中的布局(4)設(shè)置(shèzhì)各控件屬性(5)編寫(xiě)代碼,響應(yīng)控件事件GUI(GraphicsUserInterface),即圖形用戶界面,是指用圖形的方式(fāngshì)實(shí)現(xiàn)人與計(jì)算機(jī)之間的交互。9.1.2編寫(xiě)GUI應(yīng)用程序的步驟共九十六頁(yè)9.1.3Control類.NET中的大多數(shù)控件都派生于System.Windows.Forms.Control類。Control類實(shí)現(xiàn)了所有窗體交互控件的基本功能:處理用戶(yònghù)鍵盤輸入、處理消息驅(qū)動(dòng)、限制控件大小等等。共九十六頁(yè)Control類的屬性(shǔxìng)共九十六頁(yè)Control類的屬性(shǔxìng)共九十六頁(yè)Control類的屬性(shǔxìng)共九十六頁(yè)Name:

9.1.4控件的基本(jīběn)屬性用來(lái)獲取(huòqǔ)或設(shè)置控件的名稱。名稱是控件的標(biāo)識(shí)。Text:

用來(lái)獲取或設(shè)置控件的標(biāo)題文字。Width和Height:

用來(lái)獲取或設(shè)置控件的大小。X和Y:

用來(lái)獲取或設(shè)置控件的位置。Visible:

用來(lái)獲取或設(shè)置控件是否可見(jiàn)。取值為true或false。共九十六頁(yè)Enabled:

9.1.4控件的基本(jīběn)屬性ForeColor:

用來(lái)(yònɡlái)獲取或設(shè)置控件的前景色。BackColor:

用來(lái)獲取或設(shè)置控件的背景色。Font:

用來(lái)獲取或設(shè)置控件的字體。BorderStyle:

用來(lái)獲取或設(shè)置控件的邊框。用來(lái)獲取或設(shè)置控件是否對(duì)響應(yīng)交互。取值為true或false。共九十六頁(yè)AutoSize:

9.1.4控件的基本(jīběn)屬性Anchor:

Dock:

獲取(huòqǔ)或設(shè)置控件??康礁溉萜鞯哪囊粋€(gè)邊緣。TextAlign:

用來(lái)確定文本對(duì)齊方式。Cursor:

用來(lái)獲取或設(shè)置鼠標(biāo)移到控件上時(shí),被顯示的鼠標(biāo)指針類型。用來(lái)獲取或設(shè)置控件是否自動(dòng)調(diào)整大小。取值為true或false。獲取或設(shè)置控件的哪些邊緣錨定到其容器邊緣。共九十六頁(yè)(1)Name:用來(lái)獲取或設(shè)置(shèzhì)控件的名稱。名稱是控件的標(biāo)識(shí)。(2)Text:用來(lái)獲取或設(shè)置控件的標(biāo)題文字。(3)Width和Height:用來(lái)獲取或設(shè)置控件的大小。(4)X和Y:用來(lái)獲取或設(shè)置控件的位置。(5)Visible:用來(lái)獲取或設(shè)置控件是否可見(jiàn)。取值為true或false。(6)Enabled:用來(lái)獲取或設(shè)置控件是否對(duì)響應(yīng)交互。取值為true或false。(7)ForeColor:用來(lái)獲取或設(shè)置控件的前景色。(8)BackColor:用來(lái)獲取或設(shè)置控件的背景色。(9)Font:用來(lái)獲取或設(shè)置控件的字體。(10)BorderStyle:用來(lái)獲取或設(shè)置控件的邊框。(11)AutoSize:用來(lái)獲取或設(shè)置控件是否自動(dòng)調(diào)整大小。取值為true或false。(12)Anchor:獲取或設(shè)置控件的哪些邊緣(biānyuán)錨定到其容器邊緣(biānyuán)。(13)Dock:獲取或設(shè)置控件??康礁溉萜鞯哪囊粋€(gè)邊緣。(14)TextAlign:用來(lái)確定文本對(duì)齊方式。(15)Cursor:用來(lái)獲取或設(shè)置鼠標(biāo)移到控件上時(shí),被顯示的鼠標(biāo)指針的類型。共九十六頁(yè)在窗體上放置一個(gè)圖片(túpiàn)框、一個(gè)“顯示”按鈕和一個(gè)“隱藏”按鈕。開(kāi)始運(yùn)行時(shí),圖片不可見(jiàn),“顯示“按鈕可用,“隱藏”按鈕不可用。單擊“顯示”按鈕后,圖片顯示出來(lái),“顯示”按鈕變成不可用,而“隱藏”按鈕變成可用。例9-1:圖片(túpiàn)的顯示和隱藏問(wèn)題描述共九十六頁(yè)9.1.5事件(shìjiàn)和事件(shìjiàn)處理事件處理程序是綁定到事件的方法。當(dāng)引發(fā)事件時(shí),執(zhí)行事件處理程序內(nèi)的代碼。每個(gè)事件處理程序提供(tígōng)兩個(gè)處理事件的參數(shù)。如下為Button控件的Click事件的事件處理程序:第一個(gè)參數(shù)sender提供對(duì)引發(fā)事件的對(duì)象的引用。第二個(gè)參數(shù)e傳遞針對(duì)要處理的事件的對(duì)象。通過(guò)引用對(duì)象的屬性(有時(shí)引用其方法)可獲得一些信息,如鼠標(biāo)事件中鼠標(biāo)的位置或拖放事件中傳輸?shù)臄?shù)據(jù)。privatevoidbutton1_Clicked(objectsender,System.EventArgse){}共九十六頁(yè)鍵盤事件:當(dāng)用戶對(duì)鍵盤進(jìn)行操作時(shí),系統(tǒng)(xìtǒng)會(huì)產(chǎn)生相應(yīng)的鍵盤事件。當(dāng)用戶按下某個(gè)鍵時(shí),就會(huì)發(fā)生KeyDown事件,隨后便發(fā)生KeyPress事件。而當(dāng)用戶釋放某個(gè)鍵時(shí),發(fā)生KeyUp事件。當(dāng)用戶按住某個(gè)鍵不放時(shí),KeyDown和KeyPress事件會(huì)不停地重復(fù)觸發(fā)。9.1.5事件(shìjiàn)和事件(shìjiàn)處理共九十六頁(yè)鼠標(biāo)事件:鼠標(biāo)是一種定位輸入設(shè)備,通常(tōngcháng)有兩個(gè)或三個(gè)按鈕(左、中和右按鈕),還可能有滾輪。它的基本操作方式主要有:?jiǎn)螕?、雙擊和滾動(dòng)。

9.1.5事件(shìjiàn)和事件(shìjiàn)處理共九十六頁(yè)Control類的事件(shìjiàn)

共九十六頁(yè)Control類的方法(fāngfǎ)共九十六頁(yè)Control類的方法(fāngfǎ)共九十六頁(yè)例9-2:圖片顯示(xiǎnshì)控制問(wèn)題描述窗體上用圖片框顯示一張圖片。當(dāng)在圖片框上單擊鼠標(biāo)左鍵時(shí)圖片放大10%,單擊鼠標(biāo)右鍵時(shí)圖片縮小10%。鼠標(biāo)在圖片框上移動(dòng)(yídòng)時(shí),窗體標(biāo)題顯示當(dāng)前位置坐標(biāo)。共九十六頁(yè)9.2常用(chánɡyònɡ)控件標(biāo)簽(Label):用于顯示用戶不能編輯的文本或圖象,起標(biāo)注或說(shuō)明作用。該控件不能獲得(huòdé)焦點(diǎn)。9.2.1標(biāo)簽標(biāo)簽共九十六頁(yè)

標(biāo)簽的屬性、事件(shìjiàn)與方法屬性說(shuō)明Text該屬性用于設(shè)置或獲取與該控件關(guān)聯(lián)的文本Image指定標(biāo)簽要顯示的圖象方法說(shuō)明Hide隱藏控件,調(diào)用該方法時(shí),即使Visible屬性設(shè)置為True,控件也不可見(jiàn)Show相當(dāng)于將控件的Visible屬性設(shè)置為True并顯示控件事件說(shuō)明Click用戶單擊控件時(shí)將發(fā)生該事件9.2.1標(biāo)簽(biāoqiān)共九十六頁(yè)按鈕(Button):提供用戶(yònghù)與應(yīng)用程序的交互,單擊按鈕來(lái)執(zhí)行相應(yīng)的操作。9.2.2按鈕按鈕共九十六頁(yè)按鈕的屬性、事件(shìjiàn)與方法屬性說(shuō)明Text按鈕表面的標(biāo)題方法說(shuō)明PerformClick執(zhí)行Button控件的Click事件事件說(shuō)明Click用戶單擊控件時(shí)將發(fā)生該事件MouseEnter鼠標(biāo)進(jìn)入按鈕區(qū)域時(shí)觸發(fā)MouseLeave鼠標(biāo)離開(kāi)按鈕區(qū)域時(shí)觸發(fā)9.2.2按鈕共九十六頁(yè)9.2.2按鈕Click事件(shìjiàn)練習(xí)。privatevoidbutton1_Click(objectsender,System.EventArgse){MessageBox.Show(this,"你點(diǎn)擊(diǎnjī)了[確定]按鈕。","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);}共九十六頁(yè)9.2.2按鈕MouseEnter事件(shìjiàn)練習(xí)。privatevoidbutton1_MouseEnter(objectsender,System.EventArgse){//顏色在System.Drawing名稱(míngchēng)空間下

this.button1.BackColor=Color.Red;}共九十六頁(yè)9.2.2按鈕MouseLeave事件(shìjiàn)練習(xí)。privatevoidbutton1_MouseLeave(objectsender,System.EventArgse){this.button1.BackColor=SystemColors.Control;}共九十六頁(yè)文本框(TextBox):文本框經(jīng)常用于獲取用戶輸入或顯示文本,通常用于可編輯文本,也可以設(shè)定其成為(chéngwéi)只讀控件。文本框能夠顯示多行數(shù)據(jù),并添加基本的格式設(shè)置。

9.2.3文本框文本框共九十六頁(yè)屬性說(shuō)明MaxLength可在文本框中輸入的最大字符數(shù)

Multiline表示是否可在文本框中輸入多行文本

Passwordchar機(jī)密和敏感數(shù)據(jù),密碼輸入字符

ReadOnly文本框中的文本為只讀Text檢索在控件中輸入的文本方法說(shuō)明Clear刪除現(xiàn)有的所有文本

Focus設(shè)置焦點(diǎn)事件說(shuō)明KeyPress用戶按一個(gè)鍵結(jié)束時(shí)將發(fā)生該事件

Text屬性是文本(wénběn)框最重要的屬性,要顯示的文本(wénběn)就包含在Text屬性中。Text屬性可以在設(shè)計(jì)窗口時(shí)使用屬性窗口設(shè)置,也可以在運(yùn)行時(shí)用代碼設(shè)置或者通過(guò)用戶輸入設(shè)置,同樣也可以在運(yùn)行時(shí)通過(guò)讀取Text屬性來(lái)獲得文本框的當(dāng)前內(nèi)容。

文本框的屬性、事件(shìjiàn)與方法9.2.3文本框共九十六頁(yè)設(shè)計(jì)(shèjì)一個(gè)乘法運(yùn)算窗口,如下圖所示,該窗口能完成浮點(diǎn)數(shù)乘法運(yùn)算。例9-3:乘法(chéngfǎ)運(yùn)算說(shuō)明共九十六頁(yè)

privatevoidbutton1_Click(objectsender,EventArgse)//求積

{doublea=0,b=0,s=0;try{a=Convert.ToDouble(textBox1.Text);b=Convert.ToDouble(textBox2.Text);}catch(Exceptionexp){MessageBox.Show(exp.Message);}s=a*b;textBox3.Text=Convert.ToString(s);}

privatevoidbutton2_Click(objectsender,EventArgse)//清空(qīnɡkōnɡ)

{textBox1.Clear();textBox2.Clear();textBox3.Clear();

}

privatevoidbutton3_Click(objectsender,EventArgse)//退出

{this.Close();

}共九十六頁(yè)設(shè)計(jì)一個(gè)登錄窗口。登錄窗口是很多應(yīng)用系統(tǒng)中不可缺少的組成部分。通過(guò)(tōngguò)驗(yàn)證用戶輸入的用戶名和密碼,決定是否允許用戶進(jìn)入系統(tǒng),可在一定程度上保證系統(tǒng)的安全。例9-4:登錄(dēnɡlù)窗體設(shè)計(jì)說(shuō)明共九十六頁(yè)privatevoidbutton1_Click(objectsender,EventArgse)

{

if((this.textBox1.Text==“abc”)&&(this.textBox2.Text==“123”))

{

MessageBox.Show(“登錄成功(chénggōng)”);

}else

{

MessageBox.Show(“輸入錯(cuò)誤!”);

}

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

this.textBox1.Clear();

this.textBox2.Clear();

this.textBox1.Focus();();

}共九十六頁(yè)單選按鈕(RadioButton):?jiǎn)芜x按鈕(RadioButton)通常成組出現(xiàn),用于為用戶(yònghù)提供兩個(gè)或多個(gè)互相排斥的選項(xiàng)。單選按鈕是以他們所在的容器劃分組的,直接在Form上放置的單選按鈕將自動(dòng)成為一組,這時(shí)Form就是容器,當(dāng)選中容器中的一個(gè)單選按鈕時(shí),其他的將自動(dòng)撤銷選中。

9.2.4單選按鈕控件共九十六頁(yè)如果要在一個(gè)Form上創(chuàng)建多個(gè)單選按鈕組,則需要使用GroupBox或者Panel控件作為容器。把單選按鈕組合(zǔhé)在一起,使它們創(chuàng)建一個(gè)邏輯單元。首先在窗體上拖放一個(gè)GroupBox控件(組框),再把需要的RadioButton按鈕放在組框的邊界內(nèi),RadioButton按鈕知道如何改變自己的狀態(tài),以反應(yīng)組框中唯一被選中的選項(xiàng)。

9.2.4單選按鈕控件共九十六頁(yè)屬性說(shuō)明Appearance獲取或設(shè)置確定單選按鈕控件外觀的值Text獲取或設(shè)置與此控件關(guān)聯(lián)的文本CheckAlign獲取或設(shè)置RadioButton的復(fù)選框部分的位置Image獲取或設(shè)置顯示在按鈕控件上的圖像Checked獲取或設(shè)置一個(gè)值,該值指示是否已選中控件事件說(shuō)明CheckedChanged當(dāng)Checked屬性的值更改時(shí)發(fā)生Click在單擊控件時(shí)發(fā)生單選按鈕的屬性(shǔxìng)、事件9.2.4單選按鈕控件共九十六頁(yè)例9-5:RadioButton控件的實(shí)例(shílì)練習(xí)共九十六頁(yè)復(fù)選按鈕(CheckBox):復(fù)選框(CheckBox)指示某特定條件是打開(kāi)的還是關(guān)閉的。當(dāng)用戶希望選擇一個(gè)或多個(gè)選項(xiàng)時(shí),就需要使用(shǐyòng)復(fù)選框。多個(gè)CheckBox控件構(gòu)成一組選項(xiàng)時(shí),可以進(jìn)行多重選擇,相互之間不影響。

9.2.5復(fù)選按鈕控件共九十六頁(yè)屬性說(shuō)明Appearance獲取或設(shè)置確復(fù)選按鈕控件外觀的值Text獲取或設(shè)置與此控件關(guān)聯(lián)的文本Image獲取或設(shè)置顯示在按鈕控件上的圖像Checked獲取或設(shè)置一個(gè)值,該值指示是否已選中控件CheckState獲取或設(shè)置CheckBox的狀態(tài)ThreeState獲取或設(shè)置一個(gè)值,該值指示此CheckBox是否允許三種復(fù)選狀態(tài)而不是兩種。事件說(shuō)明CheckedChanged當(dāng)Checked屬性的值更改時(shí)發(fā)生CheckStateChanged當(dāng)CheckState屬性的值更改時(shí)發(fā)生Click在單擊控件時(shí)發(fā)生復(fù)選按鈕的屬性(shǔxìng)、事件9.2.5復(fù)選按鈕控件共九十六頁(yè)一個(gè)關(guān)于RadioButton控件以及CheckBox控件的使用的簡(jiǎn)單例子(lìzi)。程序界面如下:

例9-6:簡(jiǎn)單的學(xué)生信息調(diào)查的設(shè)計(jì)(shèjì)與實(shí)現(xiàn)共九十六頁(yè)

privatevoidbutton1_Click(objectsender,EventArgse){

stringname;stringsex;stringcourse=null;name=textBox1.Text;if(radioButton1.Checked)sex=radioButton1.Text;elsesex=radioButton2.Text;if(checkBox1.Checked)course+=checkBox1.Text+"";if(checkBox2.Checked)course+=checkBox2.Text+"";if(checkBox3.Checked)course+=checkBox3.Text+"";if(checkBox4.Checked)course+=checkBox4.Text+"“;textBox2.Show();textBox2.Text="姓名:"+name+"\r\n\r\n"+

"性別(xìngbié):"+sex+"\r\n\r\n"+

"所學(xué)過(guò)的課程:"+course;}共九十六頁(yè)本案例建立一個(gè)使用(shǐyòng)單選鈕和復(fù)選鈕的應(yīng)用程序,界面上有一個(gè)文本框,兩組單選鈕和一組復(fù)選鈕。兩組單選鈕分別用于設(shè)置文本框的字體和字號(hào),一組復(fù)選鈕用于設(shè)置文本框的字型。程序界面如下:

例9-7:字體(zìtǐ)設(shè)置案例說(shuō)明共九十六頁(yè)

//“字體——宋體”設(shè)置

privatevoidradioButton1_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont("宋體",textBox1.Font.Size,textBox1.Font.Style);}//“字體——隸書(shū)”設(shè)置

privatevoidradioButton2_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont("隸書(shū)",textBox1.Font.Size,textBox1.Font.Style);}//“字體——楷體_GB2312”設(shè)置

privatevoidradioButton3_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont("楷體_GB2312",textBox1.Font.Size,textBox1.Font.Style);}//“字號(hào)——小五”設(shè)置

privatevoidradioButton6_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont(textBox1.Font.Name,9f,textBox1.Font.Style);}//“字號(hào)——三號(hào)(sānhào)”設(shè)置

privatevoidradioButton5_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont(textBox1.Font.Name,15.75f,textBox1.Font.Style);}//“字號(hào)——一號(hào)”設(shè)置

privatevoidradioButton4_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont(textBox1.Font.Name,26.25f,textBox1.Font.Style);}

共九十六頁(yè)//“字型——加粗”設(shè)置(shèzhì)

privatevoidcheckBox1_CheckedChanged(objectsender,EventArgse){if(checkBox1.Checked)textBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style|FontStyle.Bold);elsetextBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style&~FontStyle.Bold);}//“字型——斜體”設(shè)置

privatevoidcheckBox2_CheckedChanged(objectsender,EventArgse){if(checkBox2.Checked)textBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style|FontStyle.Italic);elsetextBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style&~FontStyle.Italic);}//“字型——下劃線”設(shè)置

privatevoidcheckBox3_CheckedChanged(objectsender,EventArgse){if(checkBox3.Checked)textBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style|FontStyle.Underline);elsetextBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style&~FontStyle.Underline);}共九十六頁(yè)列表框(ListBox):列表框控件用來(lái)顯示一組條目,以便讓操作者從中選擇一條或者多條,然后進(jìn)行(jìnxíng)相應(yīng)的處理。

9.2.6列表框共九十六頁(yè)Items:

列表框的主要(zhǔyào)屬性MultiColumn:

ColumnWidth:

獲取(huòqǔ)或設(shè)置多列ListBox中列的寬度。SelectedIndex:

獲取或設(shè)置ListBox中當(dāng)前選定項(xiàng)的從零開(kāi)始的索引。獲取或設(shè)置ListBox的項(xiàng)。獲取或設(shè)置一個(gè)值,該值指示ListBox是否支持多列。共九十六頁(yè)SelectedItems:

獲取包含ListBox中當(dāng)前選定(xuǎndìnɡ)項(xiàng)的集合。SelectionMode:

獲取或設(shè)置在ListBox中選擇項(xiàng)所用(suǒyònɡ)的方法。Sorted:

獲取或設(shè)置一個(gè)值,該值指示ListBox中的項(xiàng)是否按字母順序排序。SelectedItem:

獲取或設(shè)置ListBox中的當(dāng)前選定項(xiàng)。列表框的主要屬性共九十六頁(yè)Items.Add()

Items.Clear()

從集合(jíhé)中移除所有的項(xiàng)。Items.Insert()

將項(xiàng)插入(chārù)列表框的指定索引處。Items.Remove()

從集合中移除指定的對(duì)象。Items.RemoveAt()

移除集合中指定索引處的項(xiàng)。向ListBox的項(xiàng)列表添加項(xiàng)。列表框的主要方法共九十六頁(yè)例9-8:列表框的使用(shǐyòng)舉例共九十六頁(yè)

//添加(tiānjiā)新的課程

privatevoidbutton1_Click(objectsender,EventArgse){boolexit=false;

if(textBox1.Text=="")MessageBox.Show("所添加的課程不能為空。");else{

for(inti=0;i<listBox1.Items.Count;i++)

if(textBox1.Text==listBox1.Items[i].ToString()){MessageBox.Show("不能添加重復(fù)的課程。");exit=true;textBox1.Clear();break;}

if(exit==false){listBox1.Items.Add(textBox1.Text);textBox1.Clear();}

}

}共九十六頁(yè)

//”->”按鈕單擊事件(shìjiàn)privatevoidbutton2_Click(objectsender,EventArgse){

try{this.listBox2.Items.Add(this.listBox1.SelectedItem);

this.listBox1.Items.Remove(this.listBox1.SelectedItem);}

catch(Exceptionexp){MessageBox.Show(exp.Message);}}

//”<-”按鈕單擊事件privatevoidbutton3_Click(objectsender,EventArgse){try{

this.listBox1.Items.Add(this.listBox2.SelectedItem);

this.listBox2.Items.Remove(this.listBox2.SelectedItem);}

catch(Exceptionexp){

MessageBox.Show(exp.Message);}}共九十六頁(yè)

//”>>”按鈕單擊事件(shìjiàn)privatevoidbutton4_Click(objectsender,EventArgse){

for(inti=0;i<this.listBox1.Items.Count;i++){this.listBox2.Items.Add(this.listBox1.Items[i]);

}

this.listBox1.Items.Clear();}//”<<”按鈕單擊事件privatevoidbutton5_Click(objectsender,EventArgse){for(inti=0;i<this.listBox2.Items.Count;i++){this.listBox1.Items.Add(this.listBox2.Items[i]);}

this.listBox2.Items.Clear();}共九十六頁(yè)組合框(ComboBox):組合框由兩部分組成,即一個(gè)文本框和一個(gè)列表框。文本框可以用來(lái)顯示當(dāng)前選中的條目,如果文本框可以編輯,則可以直接輸入選擇的條目。單擊文本框旁邊帶有向下箭頭(jiàntóu)的按鈕,則會(huì)彈出列表框,使用鍵盤或者鼠標(biāo)可以在列表框中選擇條目。

9.2.7組合(zǔhé)框共九十六頁(yè)DropDownStyle:

組合(zǔhé)框的主要屬性Items:

MaxDropDownItems:

下拉列表能顯示的最大條目(tiáomù)數(shù)(1—100),如果實(shí)際條目數(shù)大于此數(shù),將出現(xiàn)滾動(dòng)條。確定下拉列表組合框類型。存儲(chǔ)ComboBox中的列表內(nèi)容。Simple:表示文本框可編輯,列表部分永遠(yuǎn)可見(jiàn)。DropDown:是默認(rèn)值,表示文本框可編輯,必須單擊箭頭才能看到列表部分。DropDownList:表示文本框不可編輯,必須單擊箭頭才能看到列表部分。共九十六頁(yè)SelectedItem:

SelectedIndex:編輯框所選列表?xiàng)l目的索引(suǒyǐn)號(hào),列表?xiàng)l目索引(suǒyǐn)號(hào)從0開(kāi)始。如果編輯框未從列表中選擇條目,該值為-1。所選擇條目的內(nèi)容,即下拉列表中選中的字符串。如一個(gè)(yīɡè)也沒(méi)選,該值為空。其實(shí),屬性Text也是所選擇的條目的內(nèi)容。組合框的主要屬性Sorted:

表示下拉列表框中條目是否以字母順序排序,默認(rèn)值為false,不允許。共九十六頁(yè)組合框的主要(zhǔyào)事件被選索引號(hào)改變時(shí)發(fā)生(fāshēng)的事件。SelectedIndexChanged:共九十六頁(yè)本例是要在左邊的ComboBox中選擇一個(gè)俱樂(lè)部名稱,在右邊的ComboBox中自動(dòng)添加一些被選中的俱樂(lè)部的球員(qiúyuán)名稱,單擊【確定】按鈕,則彈出所選擇的信息。單擊【取消】按鈕,退成應(yīng)用程序。例9-9:球員(qiúyuán)俱樂(lè)部問(wèn)題描述共九十六頁(yè)privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse){

switch(boBox1.SelectedIndex){

case0:boBox2.Items.Clear();

boBox2.Items.Add("皮爾洛");boBox2.Items.Add("卡卡(kǎkǎ)");boBox2.Items.Add("西多夫");boBox2.Items.Add("馬爾蒂尼");boBox2.Items.Add("吉拉蒂諾");boBox2.Items.Add("迪達(dá)");break;case1:boBox2.Items.Clear();boBox2.Items.Add("伊布拉希莫維奇");boBox2.Items.Add("阿德里亞諾");boBox2.Items.Add("塞薩爾");boBox2.Items.Add("坎比亞索");boBox2.Items.Add("克雷斯波");boBox2.Items.Add("斯坦科維奇");break;case2:

boBox2.Items.Clear();

boBox2.Items.Add("卡莫拉內(nèi)西");boBox2.Items.Add("蒂亞格");boBox2.Items.Add("布馮");boBox2.Items.Add("特雷澤蓋");boBox2.Items.Add("皮耶羅");boBox2.Items.Add("內(nèi)德維德");break;case3:boBox2.Items.Clear();boBox2.Items.Add("托蒂");boBox2.Items.Add("塔岱依");boBox2.Items.Add("小曼奇尼");boBox2.Items.Add("皮薩羅");boBox2.Items.Add("梅克斯");boBox2.Items.Add("帕努奇");break;default:break;}}共九十六頁(yè)privatevoidbutton2_Click(objectsender,EventArgse){this.Close();Application.Exit();}privatevoidbutton1_Click(objectsender,EventArgse){

stringclub=boBox1.Items[boBox1.SelectedIndex].ToString();

stringplayer=boBox2.Items[boBox2.SelectedIndex].ToString();MessageBox.Show("俱樂(lè)部:"+club+"\r\n"+"球員(qiúyuán):"+player,"球員介紹",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);

}共九十六頁(yè)本案例建立一個(gè)模擬在線購(gòu)物(ɡòuwù)程序,用戶輸入相應(yīng)的信息后單擊“確定”按鈕,顯示出用戶提交的有關(guān)信息。

例9-10:在線(zàixiàn)購(gòu)物。說(shuō)明共九十六頁(yè)

//“商品類型”組合框選項(xiàng)改變(gǎibiàn)privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse){switch(comboBox1.SelectedIndex){case0:listBox1.Items.Clear();listBox1.Items.Add("顯示器");listBox1.Items.Add("光驅(qū)");listBox1.Items.Add("打印機(jī)");listBox1.Items.Add("鍵盤");break;

case1:listBox1.Items.Clear();listBox1.Items.Add("計(jì)算機(jī)應(yīng)用基礎(chǔ)");listBox1.Items.Add("Java程序設(shè)計(jì)");listBox1.Items.Add("操作系統(tǒng)");listBox1.Items.Add("VisualC#.NET");break;}}共九十六頁(yè)

//“>”按鈕單擊事件(shìjiàn)

privatevoidbutton1_Click(objectsender,EventArgse){boolexit=false;

for(inti=0;i<listBox2.Items.Count;i++){

if(listBox2.Items[i].ToString()==listBox1.SelectedItem.ToString()){MessageBox.Show("該產(chǎn)品已經(jīng)選擇");exit=true;break;}}

if(exit==false){listBox2.Items.Add(listBox1.SelectedItem.ToString());}}//“<”按鈕單擊事件privatevoidbutton2_Click(objectsender,EventArgse){listBox2.Items.Remove(listBox2.SelectedItem.ToString());}共九十六頁(yè)

//“>>”按鈕單擊事件(shìjiàn)

privatevoidbutton3_Click(objectsender,EventArgse){

for(inti=0;i<listBox1.Items.Count;i++){boolexit=false;

for(intj=0;j<listBox2.Items.Count;j++){

if(listBox1.Items[i].ToString()==listBox2.Items[j].ToString()){exit=true;break;}

}

if(exit==false){listBox2.Items.Add(listBox1.Items[i].ToString());}}}//“<<”按鈕單擊事件privatevoidbutton4_Click(objectsender,EventArgse){listBox2.Items.Clear();}共九十六頁(yè)

//“確定”按鈕單擊事件

privatevoidbutton5_Click(objectsender,EventArgse){stringname=this.textBox1.Text;stringphone=this.textBox2.Text;stringcomm="";stringpayment="";stringacknowledgement="";

for(inti=0;i<listBox2.Items.Count;i++)comm+=listBox2.Items[i].ToString()+"";

if(radioButton1.Checked)payment=radioButton1.Text;elsepayment=radioButton2.Text;

if(checkBox1.Checked)acknowledgement+=checkBox1.Text+"";

if(checkBox2.Checked)acknowledgement+=checkBox2.Text+"";

if(checkBox3.Checked)acknowledgement+=checkBox3.Text+"";

this.textBox3.Text="姓名:"+name+"\r\n"+"電話:"+phone+"\r\n"+"已選擇的商品(shāngpǐn):"+comm+"\r\n"+"付款方式:"+payment+"\r\n"+"確認(rèn)方式:"+acknowledgement;}共九十六頁(yè)

//“取消(qǔxiāo)”按鈕單擊事件privatevoidbutton6_Click(objectsender,EventArgse){this.textBox1.Clear();this.textBox2.Clear();boBox1.SelectedIndex=0;this.listBox1.Items.Clear();this.listBox2.Items.Clear();this.checkBox1.Checked=false;this.checkBox2.Checked=false;this.checkBox3.Checked=false;this.textBox3.Clear();}共九十六頁(yè)

ToolTip組件,其作用是當(dāng)鼠標(biāo)停留在某個(gè)(mǒuɡè)與ToolTip組件建立關(guān)聯(lián)的控件上一段時(shí)間后,自動(dòng)顯示該控件功能的提示信息。

主要屬性有:

Active:指示該控件當(dāng)前是否處于激活狀態(tài)。

AutomaticDelay:設(shè)置經(jīng)過(guò)多長(zhǎng)時(shí)間顯示提示信息,缺省值為500ms。

AutoPopDelay:設(shè)置鼠標(biāo)指針停留多長(zhǎng)時(shí)間后消失提示信息。

9.2.8ToolTip控件共九十六頁(yè)例如:向設(shè)計(jì)窗體拖放一個(gè)(yīɡè)ToolTip控件,然后在構(gòu)造函數(shù)中加入下列代碼:this.toolTip1.SetToolTip(boBox1,"選擇參加的小組。");this.toolTip1.SetToolTip(boBox2,"選擇左邊小組參加的項(xiàng)目(xiàngmù)。");this.toolTip1.SetToolTip(this.listBox1,"各小組參加的項(xiàng)目列表。");運(yùn)行,分別將鼠標(biāo)在上述控件中停留一段時(shí)間,觀察顯示的提示信息。共九十六頁(yè)

PictureBox控件是用于顯示圖像(túxiànɡ)的Windows圖片框控件。9.2.9PictureBox控件共九十六頁(yè)P(yáng)ictureBox控件的主要(zhǔyào)屬性Image:在PictureBox中顯示(xiǎnshì)的圖片。SizeMode:圖片在控件中的顯示方式,有如下5種選擇。AutoSize:自動(dòng)調(diào)整控件PictureBox的大小,使其等于所包含的圖片大??;CenterImage:將控件的中心和圖片的中心對(duì)齊顯示。如果控件比圖片大,則圖片將居中顯示;如果圖片比控件大,則圖片將居于控件中心,而外邊緣將被剪裁掉。Normal:圖片被置于控件的左上角。如果圖片比控件大,則超出部分被剪裁掉。StretchImage:控件中的圖像被拉伸或收縮,以適合控件的大小,完全占滿控件。Zoom:控件中的圖片按照比例拉伸或收縮,以適合控件的大小,占滿控件的長(zhǎng)度或高度。共九十六頁(yè)

Timer組件主要用于檢查是否到達(dá)事先規(guī)定的時(shí)間間隔,并在到達(dá)該時(shí)間間隔觸發(fā)的事件中執(zhí)行需要的功能。1、常用的基本屬性(shǔxìng)(1)Enabled:是否啟用計(jì)時(shí),false表示停止計(jì)時(shí),true表示開(kāi)始計(jì)時(shí)。(2)Interval:觸發(fā)Tick事件的間隔時(shí)間,以ms為單位,默認(rèn)為100ms。2、常用的基本事件Tick事件:每隔[Interval]屬性指定的時(shí)間都會(huì)觸發(fā)。Timer控件9.2.10日期(rìqī)時(shí)間相關(guān)控件

共九十六頁(yè)例9-11:設(shè)計(jì)一個(gè)(yīɡè)簡(jiǎn)單的時(shí)鐘顯示窗體。說(shuō)明(shuōmíng)程序運(yùn)行初始界面單擊“開(kāi)始”按鈕單擊“停止”按鈕共九十六頁(yè)例9-11:設(shè)計(jì)(shèjì)一個(gè)簡(jiǎn)單的時(shí)鐘顯示窗體。實(shí)現(xiàn)(shíxiàn)步驟(1)新建一個(gè)名為TimerExample的Windows應(yīng)用程序項(xiàng)目,將Form1.cs改名為FormTimer.cs。(2)調(diào)整窗體到適當(dāng)大??;設(shè)置[Text]屬性為“時(shí)鐘顯示窗體”。(3)在Form窗體中添加一個(gè)Timer組件、一個(gè)Button控件和一個(gè)Label控件,在[設(shè)計(jì)]視圖下,窗體中各控件的屬性、布局及顯示效果如圖所示。共九十六頁(yè)(4)分別(fēnbié)添加timer1的Tick事件和buttonOK的Click事件代碼。privatevoidtimer1_Tick(objectsender,EventArgse){labelDisplay.Text=DateTime.Now.ToLongTimeString();}//每次按下buttonnOK按鈕,使timer1的啟用狀態(tài)發(fā)生變化,并相應(yīng)地改變//buttonOK上的文本privatevoidbuttonOK_Click(objectsender,EventArgse){timer1.Enabled=!timer1.Enabled;buttonOK.Text=timer1.Enabled?"停止":"開(kāi)始";}(5)按<F5>鍵編譯并執(zhí)行,觀察結(jié)果。共九十六頁(yè)

DateTimePicker

控件使用戶可以從日期或時(shí)間列表中選擇單個(gè)項(xiàng)。在用來(lái)表示日期時(shí),它顯示為兩部分:一個(gè)(yīɡè)下拉列表(帶有以文本形式表示的日期)和一個(gè)(yīɡè)網(wǎng)格(在單擊列表旁邊的向下箭頭時(shí)顯示)。DataTimerPick控件9.2.10日期時(shí)間(shíjiān)相關(guān)控件

共九十六頁(yè)

MonthCalendar控件與DateTimePicker控件類似,顯示(xiǎnshì)效果與DateTimePicker控件使用的下拉式日歷一致。MonthCalendar控件9.2.10日期時(shí)間(shíjiān)相關(guān)控件

共九十六頁(yè)標(biāo)準(zhǔn)對(duì)話框是指MessageBox類。MessageBox類的作用是顯示可包含文字、按鈕和有提示用戶作用的符號(hào)的對(duì)話框。

MessageBox類無(wú)法創(chuàng)建它的實(shí)例,只能用類名來(lái)調(diào)用它的方法。若要顯示對(duì)話框,可以直接(zhíjiē)調(diào)用它的靜態(tài)方法Show方法。顯示在消息框中的標(biāo)題、消息、按鈕和圖標(biāo)由傳遞給該方法的參數(shù)確定。9.3標(biāo)準(zhǔn)(biāozhǔn)對(duì)話框共九十六頁(yè)名稱說(shuō)明Show(String)顯示一個(gè)消息框,該消息框包含消息并返回結(jié)果。Show(String,String)顯示一個(gè)消息框,該消息框包含消息和標(biāo)題欄標(biāo)題,并且返回結(jié)果。Show(Window,String)在指定窗口的前面顯示消息框。該消息框顯示消息并返回結(jié)果。Show(String,String,MessageBoxButton)顯示一個(gè)消息框,該消息框包含消息、標(biāo)題欄標(biāo)題和按鈕,并且返回結(jié)果。Show(Window,String,String)在指定窗口的前面顯示消息框。該消息框顯示消息和標(biāo)題欄標(biāo)題,并且返回結(jié)果。Show(String,String,MessageBoxButton,MessageBoxImage)顯示一個(gè)消息框,該消息框包含消息、標(biāo)題欄標(biāo)題、按鈕和圖標(biāo),并且返回結(jié)果。Show(Window,String,String,MessageBoxButton)在指定窗口的前面顯示消息框。該消息框顯示消息、標(biāo)題欄標(biāo)題和按鈕,并且返回結(jié)果。Show(String,String,MessageBoxButton,MessageBoxImage,MessageBoxResult)顯示一個(gè)消息框,該消息框包含消息、標(biāo)題欄標(biāo)題、按鈕和圖標(biāo),并接受默認(rèn)消息框結(jié)果和返回結(jié)果。Show(Window,String,String,MessageBoxButton,MessageBoxImage)在指定窗口的前面顯示消息框。該消息框顯示消息、標(biāo)題欄標(biāo)題、按鈕和圖標(biāo),并且返回結(jié)果。Show(String,String,MessageBoxButton,MessageBoxImage,MessageBoxResult,MessageBoxOptions)顯示一個(gè)消息框,該消息框包含消息、標(biāo)題欄標(biāo)題、按鈕和圖標(biāo),并且接受默認(rèn)消息框結(jié)果、遵從指定選項(xiàng)并返回結(jié)果。Show(Window,String,String,MessageBoxButton,MessageBoxImage,MessageBoxResult)在指定窗口的前面顯示消息框。該消息框顯示消息、標(biāo)題欄標(biāo)題、按鈕和圖標(biāo),并接受默認(rèn)消息框結(jié)果和返回結(jié)果。Show(Window,String,String,MessageBoxButton,MessageBoxImage,MessageBoxResult,MessageBoxOptions)在指定窗口的前面顯示消息框。該消息框顯示消息、標(biāo)題欄標(biāo)題、按鈕和圖標(biāo),并且接受默認(rèn)消息框結(jié)果、遵從指定選項(xiàng)并返回結(jié)果。共九十六頁(yè)名稱說(shuō)明Sh

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論