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

下載本文檔

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

文檔簡介

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

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

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

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

“程序”

“MicrosoftVisualStudio.NET2008”

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

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

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

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

InitializeComponent()

方法

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

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

///使用代碼編輯器修改此方法的內(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項目的容器9.1.1WinForms概述共九十六頁///<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概述共九十六頁staticclassProgram{///<summary>///應(yīng)用程序的主入口(rùkǒu)點。

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

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

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

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

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

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

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

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

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

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

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

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

Dock:

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

用來確定文本對齊方式。Cursor:

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

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

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

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

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

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

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

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

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

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

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

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

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();

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

{

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

{

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

}else

{

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

}

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

this.textBox1.Clear();

this.textBox2.Clear();

this.textBox1.Focus();();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

共九十六頁//“字型——加粗”設(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);}共九十六頁列表框(ListBox):列表框控件用來顯示一組條目,以便讓操作者從中選擇一條或者多條,然后進行(jìnxíng)相應(yīng)的處理。

9.2.6列表框共九十六頁Items:

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

ColumnWidth:

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

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

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

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

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

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

Items.Clear()

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

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

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

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

//添加(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();}

}

}共九十六頁

//”->”按鈕單擊事件(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);}}共九十六頁

//”>>”按鈕單擊事件(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();}共九十六頁組合框(ComboBox):組合框由兩部分組成,即一個文本框和一個列表框。文本框可以用來顯示當(dāng)前選中的條目,如果文本框可以編輯,則可以直接輸入選擇的條目。單擊文本框旁邊帶有向下箭頭(jiàntóu)的按鈕,則會彈出列表框,使用鍵盤或者鼠標(biāo)可以在列表框中選擇條目。

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

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

MaxDropDownItems:

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

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

表示下拉列表框中條目是否以字母順序排序,默認(rèn)值為false,不允許。共九十六頁組合框的主要(zhǔyào)事件被選索引號改變時發(fā)生(fāshēng)的事件。SelectedIndexChanged:共九十六頁本例是要在左邊的ComboBox中選擇一個俱樂部名稱,在右邊的ComboBox中自動添加一些被選中的俱樂部的球員(qiúyuán)名稱,單擊【確定】按鈕,則彈出所選擇的信息。單擊【取消】按鈕,退成應(yīng)用程序。例9-9:球員(qiúyuán)俱樂部問題描述共九十六頁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;}}共九十六頁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("俱樂部:"+club+"\r\n"+"球員(qiúyuán):"+player,"球員介紹",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);

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

例9-10:在線(zàixiàn)購物。說明共九十六頁

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

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

//“>”按鈕單擊事件(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());}共九十六頁

//“>>”按鈕單擊事件(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();}共九十六頁

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

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;}共九十六頁

//“取消(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();}共九十六頁

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

主要屬性有:

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

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

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

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

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

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

共九十六頁例9-11:設(shè)計一個(yīɡè)簡單的時鐘顯示窗體。說明(shuōmíng)程序運行初始界面單擊“開始”按鈕單擊“停止”按鈕共九十六頁例9-11:設(shè)計(shèjì)一個簡單的時鐘顯示窗體。實現(xiàn)(shíxiàn)步驟(1)新建一個名為TimerExample的Windows應(yīng)用程序項目,將Form1.cs改名為FormTimer.cs。(2)調(diào)整窗體到適當(dāng)大小;設(shè)置[Text]屬性為“時鐘顯示窗體”。(3)在Form窗體中添加一個Timer組件、一個Button控件和一個Label控件,在[設(shè)計]視圖下,窗體中各控件的屬性、布局及顯示效果如圖所示。共九十六頁(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?"停止":"開始";}(5)按<F5>鍵編譯并執(zhí)行,觀察結(jié)果。共九十六頁

DateTimePicker

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

共九十六頁

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論