版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章
Windows應用程序設計根底
C#是一種可視化的程序設計語言。Windows窗體和控件是開發(fā)C#應用程序的根底,窗體和控件在C#程序設計中扮演著重要的角色。在C#中,每個Windows窗體和控件都是對象,都是類的實例。窗體是可視化程序設計的根底界面,是其他對象的載體和容器。控件是添加到窗體對象上的對象,每個控件都有自己的屬性、方法和大事以完成特定的功能。Windows應用程序設計還表達了另外一種思維,即對大事的處理。22023/11/5C#程序設計有用教程本章將介紹建立Windows應用程序、使用WindowsForms常用控件、菜單和多文檔界面設計等。同時向大家呈現(xiàn)用Windows窗體來編寫程序的特點以及技巧。32023/11/5C#程序設計有用教程
9.1Windows應用程序的構造
VS.NET集成開發(fā)環(huán)境是基于.NETFramework構建的,該框架供給了一個有條理的、面對對象的、可擴展的類集,它使用戶得以開發(fā)豐富的Windows應用程序。通過Windows“窗體設計器”進展設計窗體,用戶就可以創(chuàng)立Windows應用程序和客戶機/效勞器應用程序。用戶可對窗體設定某些特性并在其上添加控件,然后編寫代碼以增加控件和窗體的功能。42023/11/5C#程序設計有用教程
9.1Windows應用程序的構造
VS.NET供給了很多工具可以使應用程序的開發(fā)快捷、牢靠。這些工具包括:Windows窗體可視化設計器。識別代碼編輯器。集成的編譯和調試。工程治理工具。52023/11/5C#程序設計有用教程
9.1Windows應用程序的構造
典型的Windows應用程序通常包括窗體〔Forms〕、控件〔Controls〕和相應的大事〔Events〕。下面通過C#設計實現(xiàn)一個簡潔的計算器,要求能夠實現(xiàn)根本的加、減、乘、除功能,并以這個“計算器”為例,來了解和把握Windows應用程序的一般開發(fā)過程。62023/11/5C#程序設計有用教程
9.1.1計算器窗體
Windows窗體就是創(chuàng)立Windows應用程序的框架。在VS.NET中創(chuàng)立Windows應用程序的第一步就是建立這個框架。操作步驟如下:〔1〕運行VS.NET,在【起始頁】上單擊【新建工程】按鈕,翻開“新建工程”對話框,如圖9-1所示。在“工程類型”列表框中指定工程的類型為“ViusalC#”,在“模板”列表框中選擇“Windows應用程序”模板,在“名稱”文本框中輸入Calculator,在“位置”下拉列表中選定保存工程的位置。72023/11/5C#程序設計有用教程
9.1.1計算器窗體
〔2〕單擊“確定”按鈕后就進入VS.NET的主界面,如圖9-2所示。8從圖9-2可以看出,中選擇“Windows應用程序”作為應用程序的模板后,系統(tǒng)會自動為用戶生成一個空白窗體,一般名為Form1。該窗體就是應用程序運行時顯示給用戶的操作界面,下一步就是向窗體中添加各種控件。2023/11/5C#程序設計有用教程
9.1.2計算器控件
控件表示用戶和程序之間的圖形化連接。控件可以供給或處理數(shù)據(jù)、承受用戶輸入、對大事做出響應或執(zhí)行連接用戶和應用程序的其他功能。由于控件本質上是具有圖形接口的組件,所以它能通過組件所供給的功能并與用戶交互。窗體中的控件有很多,“工具箱”中的“Windows窗體”里包含了全部Windows的標準控件,用戶還可以依據(jù)需要自己定義控件。通過在“屬性”窗口中轉變控件的屬性可以轉變的外觀和特性。92023/11/5C#程序設計有用教程
9.1.2計算器控件
本例中需要用到如下所列的控件:〔1〕按鈕:16個。10個數(shù)字按鈕分別用于表示0~9;4個運算符按鈕表示“+”、“-”、“*”、“\”;1個“計算”按鈕用于實施計算操作;1個“清空”按鈕用于去除上次計算結果。〔2〕標簽:1個。 用于標示計算結果所在的文本框?!?〕文本框:1個。 用于顯示計算結果。102023/11/5C#程序設計有用教程
9.1.2計算器控件
具體添加控件步驟如下:首先向窗體中添加按鈕〔Button〕。具體操作為:在工具箱中單擊Button,然后移動鼠標指針到窗體中的預定位置,按下左鍵拖動鼠標,劃出一個方框,釋放鼠標左鍵后,一個按鈕就被添加到剛剛方框的位置了。調整好大小和位置后單擊選中該按鈕,在“屬性”窗口中可以看到該控件名為Button1,將該按鈕的Text屬性設置為“1”。連續(xù)在窗體中添加其余15個按鈕,并分別設置好它們的屬性。112023/11/5C#程序設計有用教程
9.1.2計算器控件
界面設計已經完成了,接下來的事情就是為各個控件添加相應的大事代碼了。12依據(jù)同樣的方法在窗體中添加一個標簽〔Label〕,設置其Text屬性為“結果”,再添加一個文本框〔TextBox〕,并設置其Text屬性為空。最終,一個簡潔的計算器的界面就完成了,如圖9-3所示。2023/11/5C#程序設計有用教程
9.1.3計算器大事
在C#中,基于Windows應用程序設計方法是大事驅動的。大事驅動不是由程序的挨次來把握的,而是由大事的發(fā)生來把握的。大事驅動程序設計是圍圍著消息的產生與處理而開放的,消息就是關于發(fā)生的大事的信息。Windows程序員的工作就是對所開發(fā)的應用程序所要發(fā)出或者接收的消息進展排序和治理。大事驅動程序方法供給了很多便利,對于那些需要大范圍用戶干預的應用程序來說,更是很有用處。132023/11/5C#程序設計有用教程
9.1.3計算器大事
在“窗體設計器”中看到的是窗體及其中的控件,而要為控件添加大事處理程序就必需先切換到代碼編輯器狀態(tài)。切換到代碼編輯器有以下幾種方法:〔1〕雙擊窗體或者某控件?!?〕在解決方案資源治理器中右鍵單擊Form1.cs,從快捷菜單中選擇“查看代碼”命令。假設選擇“視圖設計器”則可以回到“窗體設計器”中?!?〕當?shù)谝淮吻袚Q到代碼編輯器之后,在窗體標題“Form1.cs[設計]”的左邊會自動消逝一個新的標題:Form1.cs,單擊該標題就可以切換到代碼編輯器。反之,假設單擊“Form1.cs[設計]”則會切換到“窗體設計器”。142023/11/5C#程序設計有用教程
9.1.3計算器大事
下面分析一下計算器中各個控件究竟應當添加什么樣的代碼。對于計算器來說,當單擊某個數(shù)字鍵后,結果顯示區(qū)內應顯示該鍵上的數(shù)字。因此,可以雙擊按鈕“1”,切換到代碼編輯器,此時間標就停留在該按鈕所對應的代碼處,輸入以下代碼:privatevoidbtn1_Click(objectsender,EventArgse){Buttonbtn=(Button)sender;textBox1.Text+=btn.Text;}152023/11/5C#程序設計有用教程
9.1.3計算器大事
連續(xù)給其他數(shù)字按鈕添加同樣的代碼。然后給4個運算符按鈕添加以下代碼:privatevoidbtnAdd_Click(objectsender,EventArgse){Buttonbtn=(Button)sender;textBox1.Text=textBox1.Text+““+btn.Text+““;//空格用于分隔數(shù)字各運算符}162023/11/5C#程序設計有用教程
9.1.3計算器大事
privatevoidbtnSub_Click(objectsender,EventArgse){Buttonbtn=(Button)sender;textBox1.Text=textBox1.Text+““+btn.Text+““;//空格用于分隔數(shù)字各運算符}
privatevoidbtnMul_Click(objectsender,EventArgse){Buttonbtn=(Button)sender;textBox1.Text=textBox1.Text+““+btn.Text+““;//空格用于分隔數(shù)字各運算符}172023/11/5C#程序設計有用教程
9.1.3計算器大事
privatevoidbtnDiv_Click(objectsender,EventArgse){Buttonbtn=(Button)sender;textBox1.Text=textBox1.Text+““+btn.Text+““;//空格用于分隔數(shù)字各運算符}接下來給“清空”按鈕添加如下代碼:privatevoidbtnClear_Click(objectsender,EventArgse){textBox1.Text=““;}182023/11/5C#程序設計有用教程
9.1.3計算器大事
最終給“計算”按鈕添加以下代碼:privatevoidbtnCalculate_Click(objectsender,EventArgse){Singler;//用于保存計算結果stringt=textBox1.Text;//t用于保存文本框中的算術表達式intspace=t.IndexOf(””);//用于搜尋空格位置strings1=t.Substring(0,space);//s1用于保存第一個運算數(shù)charop=Convert.ToChar(t.Substring(space+1,1));//op用于保存運算符strings2=t.Substring(space+3);//s2用于保存其次個運算數(shù)Singlearg1=Convert.ToSingle(s1);//將運算數(shù)從string轉換為SingleSinglearg2=Convert.ToSingle(s2);
192023/11/5C#程序設計有用教程
9.1.3計算器大事
switch(op){case”+”:r=arg1+arg2;break;case”-”:r=arg1-arg2;break;case”*”:r=arg1*arg2;break;
202023/11/5C#程序設計有用教程
9.1.3計算器大事
case”/”:if(arg2==0){thrownewApplicationException;}else{r=arg1/arg2;break;}break;default:thrownewApplicationException;}212023/11/5C#程序設計有用教程
9.1.3計算器大事
//將計算結果顯示在文本框中textBox1.Text=r.ToString;}現(xiàn)在,全部的工作都完成了。在“調試”菜單中選擇“啟動”命令或者“開頭執(zhí)行〔不調試〕”命令運行該應用程序,計算器可以工作了。222023/11/5C#程序設計有用教程
9.2Windows窗體
通過“計算器”這個例子,已初步了解了Windows應用程序的構造。下面具體介紹Windows應用程序的設計和開發(fā)。一個應用程序除了需要實現(xiàn)應有的功能外,還必需具有良好的用戶界面。在C#中,Windows應用程序的界面是以窗體〔Form)為根底的,窗體是Windows應用程序的根本單位,用來向用戶呈現(xiàn)信息和承受用戶的輸入。窗體可以是標準窗口、多文檔界面〔MDI〕窗口、對話框的顯示界面。232023/11/5C#程序設計有用教程
9.2Windows窗體
窗體就似乎一個容器,其他界面元素都可以放置在窗體中。C#中以類Form來封裝窗體,一般來說,用戶設計的窗體都是類Form的派生類,用戶窗體中添加其他界面元素的操作實際上就是向派生類中添加私有成員。當新建一個Windows應用程序工程時,C#就會自動創(chuàng)立一個默認名為Form1的Windows窗體。242023/11/5C#程序設計有用教程
9.2Windows窗體
Windows窗體由以下4局部組成:標題欄把握按鈕邊界窗口區(qū)252023/11/5C#程序設計有用教程
9.2.1Windows窗體的根本屬性
Windows窗體的屬性可以準備窗體的外觀和行為,其中常用的屬性有:名稱〔Name〕屬性、標題〔Text〕屬性、把握菜單屬性和影響窗體外觀的屬性。1.窗體的名稱屬性〔Name〕Name用于設置窗體的名稱,該屬性值作為窗體的標志,用于在程序中引用窗體。在初始新建一個Windows應用程序工程時,自動創(chuàng)立一個窗體,該窗體的名稱被自動命名為Form1;添加第2個窗體時,其名稱被自動命名為Form2,依次類推。通常而言,在設計Windows窗體時,可給其Name屬性設置一個有實際含義的名字。262023/11/5C#程序設計有用教程
9.2.1Windows窗體的根本屬性
2.窗體的標題屬性〔Text〕Text屬性用于設置窗體標題欄顯示的內容,它的值是一個字符串。通常,標題欄顯示的內容應能概括地說明窗體的內容或作用。例如,對于一個登錄窗體,其欄題欄設置為“歡送登錄!”。272023/11/5C#程序設計有用教程
9.2.1Windows窗體的根本屬性
3.窗體的把握菜單屬性在C#應用程序中的Windows窗體,一般都顯示把握菜單,以便利用戶的操作。(1)ControlBox屬性:該屬性用來設置窗體上是否有把握菜單。其默認值True,窗體上顯示把握菜單。假設將該屬性設置為False,則窗體上不顯示把握菜單,如圖9-4所示。282023/11/5C#程序設計有用教程
9.2.1Windows窗體的根本屬性
(2)MaximizeBox屬性:用于設置窗體上的最大化按鈕。其默認值True,窗體上顯示最大化按鈕。假設將該屬性設置為False,則窗體上不顯示最大化按鈕。(3)MinimizeBox屬性:用于設置窗體上的最小化按鈕。其默認值True,窗體上顯示最小化按鈕。假設將該屬性設置為False,則窗體上不顯示最小化按鈕。292023/11/5C#程序設計有用教程
9.2.1Windows窗體的根本屬性
4.設置窗體外觀的屬性(1)FormBorderStyle屬性:用于把握窗體邊界的類型。它有7個可選值,可選值說明如表9-1所示。302023/11/5C#程序設計有用教程
9.2.1Windows窗體的根本屬性
(2)Size屬性:用來設置窗體的大小。(3)Location屬性:設置窗體在屏幕上的位置,即設置窗體左上角的坐標值。(4)BackColor屬性:用于設置窗體的背景顏色,可以從彈出的調色板中選擇。312023/11/5C#程序設計有用教程
9.2.1Windows窗體的根本屬性
(5)BackgroundImage屬性:用于設置窗體的背景圖像。(6)Opacity屬性:該屬性用來設置窗體的透亮度。5.設置窗體可見性的屬性窗體的可見性由Visible屬性來把握。322023/11/5C#程序設計有用教程
9.2.2創(chuàng)立窗體
通常,在開發(fā)工程時,一個窗體往往不能滿足,通常需要用到多個窗體。C#供給了多窗體處理力氣,在一個工程中可創(chuàng)立多個窗體,添加新窗體的方式如下:(1)選擇工程菜單下的“添加Windows窗體”命令,翻開“添加新項”對話框,如圖9-5所示。332023/11/5C#程序設計有用教程
9.2.2創(chuàng)立窗體
(2)在“添加新項”對話框的模板框內,選擇“Windows窗體”模板,然后,單擊“翻開”按鈕,就添加一個新的Windows窗體。完成添加窗體后,在解決方案資源治理器窗口中雙擊對應的窗體,則在Windows窗體設計器中,可顯示該窗體。342023/11/5C#程序設計有用教程
9.2.3設置啟動窗體屬性
當在應用程序中添加了多個窗體后,默認狀況下,應用程序中的第一個窗體被自動指定為啟動窗體。在應用程序開頭運行時,此窗體就會首先顯示出來。假設想實現(xiàn)在應用程序啟動時,顯示別的窗體,那么就要設置啟動窗體。如何實現(xiàn)設置啟動窗體,請看例9-1?!纠?-1】C#設置啟動窗體。步驟如下:(1)在一個工程中,添加兩個窗體。352023/11/5C#程序設計有用教程
9.2.3設置啟動窗體屬性
(2)在解決方案中,有一個Program.cs文件,雙擊此文件,此時該文件的代碼如下所示:staticclassProgram{staticvoidMain{Application.EnableVisualStyles;Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1);}}362023/11/5C#程序設計有用教程
9.2.3設置啟動窗體屬性
(3)要實現(xiàn)先啟動Form2,只需在Program.cs文件中修改此行“Application.Run(newForm1);”代碼為“Application.Run(newForm2);”,即可。(4)運行程序,先啟動的窗體為Form2。372023/11/5C#程序設計有用教程
窗體的顯示與隱蔽
1.窗體的顯示假設要在一個窗體中通過按鈕翻開另一個窗體,就必需通過調用Show方法顯示窗體。語法如下: publicvoidShow;【例9-2】在Form1窗體中添加一個Button按鈕,在按鈕的Click大事中調用Show,翻開Form2窗體。代碼如下:privatevoidbutton1_Click(objectsender,EventArgse){Form2frm2=newForm2;//實例化Form2frm2.Show;//調用Show方法顯示Form2窗體}382023/11/5C#程序設計有用教程
窗體的顯示與隱蔽
2.窗體的隱蔽通過調用Hide方法隱蔽窗體。語法如下: publicvoidHide;【例9-3】通過登錄窗體登錄系統(tǒng),輸入用戶名和密碼后,單擊“登錄”按鈕,隱蔽登錄窗體,顯示主窗體。關鍵代碼如下: this.Hide;//調用Hide方法隱蔽當前窗體 frmMainfrm=newfrmMain;//實例化frmMain frm.Show;//調用Show方法顯示frmMain窗體392023/11/5C#程序設計有用教程
窗體的大事
Windows是大事驅動的操作系統(tǒng),對Form類的任何交互都是基于大事來實現(xiàn)的。Form類供給了大量的大事用于響應對窗體執(zhí)行的各種操作。窗體設計人員往住關心窗體的加載和關閉,通常在加載時進展界面和數(shù)據(jù)的初始化。在關閉前進展資源的釋放等清理操作,也可以取消關閉操作。下面具體介紹窗體的Click、Load和FormClosing大事。402023/11/5C#程序設計有用教程
窗體的大事
1.Click〔單擊〕大事當單擊窗體時,將會觸發(fā)窗體的Click大事。語法如下: publiceventEventHandlerClick【例9-4】在窗體的Click大事中編寫代碼,實現(xiàn)當單擊窗體時,彈出提示框。代碼如下:privatevoidForm1_Click(objectsender,EventArgse){MessageBox.Show(“已經單擊了窗體!“);//彈出提示框}412023/11/5C#程序設計有用教程
窗體的大事
程序的運行如圖9-6所示。422023/11/5C#程序設計有用教程
窗體的大事
2.Load〔加載〕大事當?shù)谝淮沃苯踊蜷g接調用Form.Show方法來顯示窗體時,窗體就會進展且只進展一次加載,并且在必需的加載操作完成后會引發(fā)Load大事。通常,在Load大事響應函數(shù)中執(zhí)行一些初始化操作。語法如下: publiceventEventHandlerLoad432023/11/5C#程序設計有用教程
窗體的大事
【例9-5】在下述程序,在窗體的Load大事中對窗體的大小、標題、顏色等屬性進展了設置。privatevoidForm1_Load(objectsender,EventArgse){this.Width=1000;this.Height=500;this.ForeColor=Color.Cyan;this.BackColor=Color.Red;this.Text=“Welcomeyou!“;}442023/11/5C#程序設計有用教程
窗體的大事
程序的運行如圖9-7所示。452023/11/5C#程序設計有用教程
窗體的大事
3.FormClosing〔關閉〕大事Form類的FormClosing大事是在窗體關閉時引發(fā)的大事,直接或間接調用Form.Close方法都會引發(fā)大事。在FormClosing大事中,通常進展關閉前確實認和資源釋放操作。語法如下: publiceventFormClosingEventHandlerFormClosing【例9-6】創(chuàng)立一個Windows應用程序,實現(xiàn)當關閉窗體之前,彈出提示框,詢問是否關閉當前窗體,單擊“是”按鈕,關閉窗體,代碼如下。462023/11/5C#程序設計有用教程
窗體的大事
privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse){DialogResultdr=MessageBox.Show(“是否關閉窗體“,“提示“,MessageBoxButtons.YesNo,MessageBoxIcon.Warning);if(dr==DialogResult.Yes)//使用if語句判定是否單擊“是”按鈕{e.Cancel=false;//假設單擊“是”按鈕則關閉窗體}else{e.Cancel=true;//否則,不執(zhí)行操作}}472023/11/5C#程序設計有用教程
窗體的大事
程序的運行如圖9-8所示。482023/11/5C#程序設計有用教程
9.3窗體控件概述
控件是包含在窗體上的對象,是構成用戶界面的根本元素,也是C#可視化編程的重要工具。使用控件可使程序的設計簡化避免大量重復性工作,簡化設計過程,有效地提高設計效率。對于一個程序開發(fā)人員而言,必需把握每類控件的功能、用途,并把握其常用的屬性、大事和方法。492023/11/5C#程序設計有用教程
9.3窗體控件概述
在VS2023中,工具箱中包含了建立應用程序的各種控件。工具箱分為Windows窗體、公共控件、容器、菜單和工具欄、數(shù)據(jù)、組件、打印、對話框等局部,常用的Windows窗體控件放在“Windows窗體”選項卡下。工具箱中有數(shù)十個常用的Windows窗體控件,它們以圖標的方式顯示在工具箱中,其名稱顯示于圖標的右側。502023/11/5C#程序設計有用教程
9.3窗體控件概述
在介紹具體控件之前,首先在此探討一下各個控件共有的屬性、大事和方法。在C#中,全部的窗體控件,比方標簽控件、文本框控件、按鈕控件等全部都是繼承于:。作為各種窗體控件的基類,Control類實現(xiàn)了全部窗體交互控件的根本功能。Control類的屬性、方法和大事是全部窗體控件所公有的,而且其中很多是在編程中常常會遇到的。512023/11/5C#程序設計有用教程
9.3窗體控件概述
〔1〕Control類的屬性Control類的屬性描述了一個窗體控件的全部公共屬性,可以在屬性〔Properties〕窗口中查看或修改窗體控件的屬性。常用的屬性如下:Name屬性每一個控件都有一個Name〔名字〕屬性,在應用程序中,可通過此屬性來引用這個控件。C#會給每個新添加的控件指定一個默認名。在應用程序設計中,可依據(jù)需要將控件的默認名字改成更有實際代表意義的名字。522023/11/5C#程序設計有用教程
9.3窗體控件概述
Text屬性在C#中,每一個控件對象都有Text屬性。Text屬性在很多控件中都有重要的意義和作用。例如,在標簽控件中顯示的文字、在文本框中用戶輸入的文字、組合框和窗體中的標題等都是用控件的Text進展設定的。對于Text屬性的設置過程及設置結果如圖9-9、9-10所示。532023/11/5C#程序設計有用教程
9.3窗體控件概述
Anchor屬性Anchor的意思是“錨”,那么Anchor屬性是用來確定此控件與其容器控件的固定關系的。在此,所謂容器控件是指什么呢?顧名思義,容器控件就是像一般的容器一樣可以存放別的控件的控件!例如,窗體控件中會包含很多的控件,像標簽控件、文本框等。這時,稱包含控件的控件為容器控件或父控件,而里面的控件為子控件。明顯,這必定涉及到一個問題,即子控件與父控件的位置關系問題。即當父控件的位置、大小變化時,子控件依據(jù)什么樣的原則轉變其位置、大小。Anchor屬性就用于設置此原則。542023/11/5C#程序設計有用教程
9.3窗體控件概述
對于Anchor屬性,可以設定Top、Bottom、Right、Left中任意的幾種,設置的方法特殊直觀,如圖9-11所示。552023/11/5C#程序設計有用教程
9.3窗體控件概述
圖9-11中選中變黑的方位即為設定的控件方位,圖中所示的方位為Top、Left、Bottom。此時,假設容器控件變化,子控件將保證其上邊緣與容器上邊的距離、左邊緣與容器左邊的距離,底邊與容器底邊的距離。其運行效果如圖9-12所示。562023/11/5C#程序設計有用教程
9.3窗體控件概述
Dock屬性Dock屬性規(guī)定了子控件與父控件的邊緣依靠關系。Dock的效果,如圖9-13所示。57Dock的值有6種,分別是Top、Bottom、Left、Right、Fill,最終還有默認值None。一旦Dock值被設定,子控件就會發(fā)生變化與父控件選定的邊緣相融在一起。2023/11/5C#程序設計有用教程
9.3窗體控件概述
〔2〕Control類的方法可以調用Control類的方法來獲得控件的一些信息,或者設置控件的屬性值及行為狀態(tài)。例如:Focus方法可設置此控件獲得的焦點;Refresh方法可重畫控件;Select方法可激活控件;Show方法可顯示控件等。582023/11/5C#程序設計有用教程
9.3窗體控件概述
〔3〕Control類的大事在C#中,當用戶進展某一項操作時,會引發(fā)某個大事的發(fā)生,此時就會調用大事處理程序代碼,實現(xiàn)對程序的把握。大事驅動實現(xiàn)是基于窗體的消息傳遞和消息循環(huán)機制的。在C#中,全部的機制都被封裝在控件之中,極大便利了編寫大事的驅動程序。假設希望能夠更加深入地操作,或定義自己的大事,就需要聯(lián)合使用托付〔Delegate〕和大事〔Event〕,可以靈敏地添加、修改大事的響應,并自定義大事的處理方法。例如,Control類的可響應的大事有:單擊時發(fā)生的Click大事;雙擊時發(fā)生的DoubleClick大事;取得焦點時發(fā)生的GetFocus大事;鼠標移動時發(fā)生的MouseMove大事等。592023/11/5C#程序設計有用教程
9.4常用控件
窗體是由一個個控件構成的,因此生疏控件是進展合理、有效的程序開發(fā)的重要前提。本節(jié)內容將針對Windows窗體應用程序中常見的控件進展具體介紹。602023/11/5C#程序設計有用教程
9.4.1按鈕控件
按鈕〔Button〕是用戶與應用程序交互的最常用的工具。它用于接收用戶的操作信息,去執(zhí)行預先規(guī)定的命令,觸發(fā)相應的大事過程,以實現(xiàn)指定的功能。1.常用屬性〔1〕Text屬性該屬性用于設定按鈕上顯示的文本。該屬性也可為按鈕創(chuàng)立快捷方式,其方法是在作為快捷鍵的字母前加一個“&”字符,則在程序運行時,命令按鈕上該字母帶有下劃線,該字母就成為快捷鍵。例如,某個按鈕的Text屬性設置為“&Display”,程序運行時,就會顯示為“Display”。612023/11/5C#程序設計有用教程
9.4.1按鈕控件
〔2〕FlatStyle屬性該屬性指定了按鈕的外觀風格,它有4個可選值。分別是:Flat、Popup、System、Standard。該屬性的默認值為Standard。〔3〕Image屬性用于設定在按鈕上顯示的圖形。〔4〕ImageAlign屬性當圖片顯示在命令按鈕上時,可以通過ImageAlign屬性調整其在按鈕上的位置。〔5〕Enable屬性用于設定控件是否可用,不行用,則用灰色表示?!?〕Visible屬性用于設定控件是否可見,不行見,則隱蔽。留意:上述的屬性中,前4項為外觀屬性;而后2項為行為屬性。622023/11/5C#程序設計有用教程
9.4.1按鈕控件
2.響應的大事假設按鈕具有焦點,就可以使用鼠標左鍵、Enter鍵或空格鍵觸發(fā)該按鈕的Click大事。當使用ShowDialog方法顯示窗體時,可以使用按鈕的DialogResult屬性指定ShowDialog的返回值?!纠?-7】按鈕控件的運用?!?〕為窗體Form1添加一個計數(shù)器nCounter,并添加3個按鈕控件,分別完成遞增計數(shù)器、遞減計數(shù)器、通過消息框提示計數(shù)器的值的功能,并添加1個Label控件來顯示每次運算后的計數(shù)器值。完成的窗體界面如圖9-14所示。632023/11/5C#程序設計有用教程
9.4.1按鈕控件
〔2〕設置窗體和各控件的屬性,如表9-2所示。642023/11/5C#程序設計有用教程
9.4.1按鈕控件
〔3〕切換到代碼窗口,創(chuàng)立大事過程:privateintnCounter;
//第一次加載時,進展計數(shù)器和lblResult的初始化privatevoidForm1_Load(objectsender,EventArgse){this.nCounter=50;this.ShowCounter;}//進展遞增操作,并提示新值privatevoidbtnInc_Click(objectsender,EventArgse){this.nCounter++;this.ShowCounter;}652023/11/5C#程序設計有用教程
9.4.1按鈕控件
//進展遞減操作,并提示新值privatevoidbtnDes_Click(objectsender,EventArgse){this.nCounter--;this.ShowCounter;}
//通過MessageBox提示當前的值privatevoidbtnMsg_Click(objectsender,EventArgse){stringstrMsg=“當前計數(shù)器=“+this.nCounter.ToString(“D8“);MessageBox.Show(strMsg,“提示“);
662023/11/5C#程序設計有用教程
9.4.1按鈕控件
//顯示計數(shù)器值到Label控件lblResultprivatevoidShowCounter{stringstrMsg=this.nCounter.ToString(“D8“);this.lblResult.Text=strMsg;}672023/11/5C#程序設計有用教程
9.4.1按鈕控件
程序運行結果如圖9-15所示。682023/11/5C#程序設計有用教程
標簽控件
標簽〔Label〕主要用來顯示文本。通常用標簽來為其他控件顯示說明信息、窗體的提示信息,或者用來顯示處理結果等信息。但是,標簽顯示的文本不能被直接編輯。除了顯示文本外,標簽還可使用Image屬性顯示圖像,或使用ImageIndex和ImageList屬性組合顯示圖像。692023/11/5C#程序設計有用教程
標簽控件
1.常用屬性〔1〕Text屬性該屬性用于設定標簽顯示的文本,可通過TextAlign屬性設置文本的對齊方式?!?〕BorderStyle屬性該屬性用于設定標簽的邊框形式,共有3個設定值,分別是None、FixedSingle、Fixed3D。該屬性的默認值為None?!?〕BackColor屬性用于設定標簽的背風光?!?〕ForeColor屬性用于設定標簽中文本的顏色?!?〕Font屬性用于設定標簽中文本的字體、大小、粗體、斜體、刪除線等。702023/11/5C#程序設計有用教程
標簽控件
〔6〕Image屬性用于設定標簽的背景圖片,可通過ImageAlign屬性設置圖片的對齊方式?!?〕Enable屬性用于設定控件是否可用,不行用,則用灰色表示?!?〕Visible屬性用于設定控件是否可見,不行見,則隱蔽?!?〕AutoSize屬性用于設定控件是否依據(jù)文本自動調整,設置為true表示自動調整。留意:上述的屬性中,前6項為外觀屬性;而后3項為行為屬性。712023/11/5C#程序設計有用教程
標簽控件
2.響應的大事標簽控件常用的大事有:Click大事和DoubleClick大事。722023/11/5C#程序設計有用教程
標簽控件
【例9-3】標簽控件的運用。對窗體上的3個標簽控件的參數(shù)進展設置,用來顯示文本。程序代碼如下:privatevoidForm1_Load(objectsender,EventArgse){//label1參數(shù)設置,默認字體為宋體9號、前風光為黑色this.label1.AutoSize=true;this.label1.BackColor=System.Drawing.Color.White;this.label1.Text=“宋體9號-白底-黑字“;
732023/11/5C#程序設計有用教程
標簽控件
//label2參數(shù)設置,默認字體為宋體9號、前風光為黑色this.label2.AutoSize=true;this.label2.BackColor=System.Drawing.Color.Black;this.label2.Font=newSystem.Drawing.Font(“宋體“,10.5F,System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));this.label2.ForeColor=System.Drawing.Color.White;this.label2.Text=“宋體10號-黑底-白字“;
742023/11/5C#程序設計有用教程
標簽控件
//label3參數(shù)設置this.label3.AutoSize=true;this.label3.BackColor=System.Drawing.Color.Blue;this.label3.Font=newSystem.Drawing.Font(“楷體_GB2312“,14.25F,System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));this.label3.ForeColor=System.Drawing.Color.Red;this.label3.Text=“楷體14號-藍底-紅字“;}752023/11/5C#程序設計有用教程
標簽控件
程序運行結果如圖9-16所示。762023/11/5C#程序設計有用教程
9.4.3文本框控件
在C#中,文本框〔TextBox〕是最常用的和最簡潔的文本顯示和輸入控件。文本框有兩種用途,一是可以用來輸出或顯示文本信息;二是可以承受從鍵盤輸入的信息。1.常用屬性〔1〕Text屬性該屬性用于設定文本框顯示的文本,可通過TextAlign屬性設置文本的對齊方式?!?〕BackColor屬性用于設定文本框的背風光。〔3〕ForeColor屬性用于設定文本框中文本的顏色。772023/11/5C#程序設計有用教程
9.4.3文本框控件
〔4〕Font屬性用于設定文本框中文本的字體、大小、粗體、斜體、刪除線等?!?〕PasswordChar屬性文本框控件以密碼輸入方式使用,輸入字母用該屬性指定字符屏蔽?!?〕Enable屬性用于設定文本框控件是否可用,不行用,則用灰色表示?!?〕Visible屬性用于設定文本框控件是否可見,不行見,則隱蔽。〔8〕ReadOnly屬性用于設定文本框控件是否只讀。〔9〕MultiLine屬性用于設定文本框控件是否包多行文本。留意:上述的屬性中,前5項為外觀屬性;而后4項為行為屬性。782023/11/5C#程序設計有用教程
9.4.3文本框控件
2.常用的方法〔1〕Clear方法用于去除文本框中已有的文本?!?〕AppendText方法用于文本框最終追加文本。792023/11/5C#程序設計有用教程
9.4.3文本框控件
3.常用的大事在文本框控件所能響應的大事中,TextChanged、Enter和Leave是常用的大事?!?〕TextChanged大事當文本框的文本內容發(fā)生變化時,觸發(fā)該大事。當向文本框輸入信息時,每輸入一個字符,就會引發(fā)一次TextChanged大事?!?〕Enter大事當文本框獲得焦點時,就會引發(fā)的大事。〔3〕Leave大事當文本框失去焦點時,就會引發(fā)的大事。802023/11/5C#程序設計有用教程
9.4.3文本框控件
【例9-9】文本框控件的運用。實現(xiàn)步驟如下:〔1〕為窗體Form1添加2個TextBox控件:tbInput和tbHint,前者可編輯單行文本,用來獵取用戶輸入;后者用于顯示數(shù)據(jù),應設置為只讀多行文本。同時,再添加1個Label控件lblCopy,用來顯示輸入文本框中數(shù)據(jù)。812023/11/5C#程序設計有用教程
9.4.3文本框控件
〔2〕在此例中,通過程序代碼設置相應的控件的屬性。主要程序代碼如下:privatevoidForm1_Load(objectsender,EventArgse){//設置2個文本框的屬性this.tbInput.ForeColor=Color.Blue;this.tbHint.BackColor=Color.White;this.tbHint.ForeColor=Color.Green;this.tbHint.ReadOnly=true;}822023/11/5C#程序設計有用教程
9.4.3文本框控件
privatevoidtbInput_Enter(objectsender,EventArgse){//光標進入去除原有文本this.tbInput.Clear;}
privatevoidtbInput_Leave(objectsender,EventArgse){//焦點退出,將文本添加到tbHint新的一行this.tbHint.AppendText(this.tbInput.Text+Environment.NewLine);}832023/11/5C#程序設計有用教程
9.4.3文本框控件
privatevoidtbInput_TextChanged(objectsender,EventArgse){//將當前tbInput中文本內容同步顯示到lblCopy中this.lblCopy.Text=this.tbInput.Text;}留意:在tbInput_Leave大事中將編輯好的文本通過方法TextBox.AppendText追加tbHint中;在tbInput_TextChanged大事中將tbInput中最新的文本同步顯示到lbCopy控件上。程序運行結果如圖9-17所示。842023/11/5C#程序設計有用教程
9.4.4單項選擇按鈕控件
單項選擇按鈕〔RadioButton〕控件為用戶供給由兩個或多個互斥選項組成的選項集。當用戶選中某單項選擇項按鈕時,同一組中的其他單項選擇項按鈕不能同時選定,該控件以圓圈內加點的方式表示選中。單項選擇按鈕用來讓用戶在一組相關的選項中選擇一項,因此單項選擇按鈕控件總是成組消逝。直接添加到一個窗體中的全部單項選擇按鈕將形成一個組。假設要添加不同的組,必需將它們放到面板或分組框中。將假設干RadionButton控件放在一個GroupBox控件內組成一組時,當這一組中的某個單項選擇按鈕控件被選中時,該組中的其他單項選擇控件將自動處于不選中狀態(tài)。852023/11/5C#程序設計有用教程
9.4.4單項選擇按鈕控件
1.常用屬性〔1〕Text屬性該屬性用于設置單項選擇按鈕旁邊的說明文字,以說明單項選擇按鈕的用途?!?〕Check屬性表示單項選擇按鈕是否被選中,選中則Checked值為True,否則為False。2.響應的大事單項選擇按鈕響應的大事主要是Click大事和CheckedChanged大事。當鼠標單擊單項選擇按鈕時,觸發(fā)Click大事,并且轉變Checked屬性值。Checked屬性值的轉變,同時將觸發(fā)CheckedChanged大事。862023/11/5C#程序設計有用教程
9.4.4單項選擇按鈕控件
【例9-10】單項選擇按鈕控件的運用。通過選擇不同的單項選擇按鈕,實現(xiàn)在文本框中顯示不同水果的價格。實現(xiàn)步驟如下:〔1〕創(chuàng)立如圖9-18所示的窗體。872023/11/5C#程序設計有用教程
9.4.4單項選擇按鈕控件
〔2〕設置窗體和各控件的屬性,如表9-3所示。882023/11/5C#程序設計有用教程
9.4.4單項選擇按鈕控件
〔3〕翻開代碼窗口,編寫大事過程。privatevoidrdoApple_CheckedChanged(objectsender,EventArgse){txtPrice.Text=“10.0“;}
privatevoidrdoBanana_CheckedChanged(objectsender,EventArgse){txtPrice.Text=“8.5“;}892023/11/5C#程序設計有用教程
9.4.4單項選擇按鈕控件
privatevoidrdoPineapple_CheckedChanged(objectsender,EventArgse){txtPrice.Text=“12.5“;}902023/11/5C#程序設計有用教程
復選框控件
復選按鈕〔CheckBox〕控件,它與單項選擇按鈕一樣,也給用戶供給一組選項供其選擇。但它與單項選擇按鈕有所不同,每個復選框都是一個單獨的選項,用戶既可以選擇它,也可以不選擇它,不存在互斥的問題,可以同時選擇多項。1.常用屬性〔1〕Text屬性。該屬性用于設置復選框旁邊的說明文字,以說明復選框的用途?!?〕Check屬性。表示復選框是否被選擇。True表示復選框被選擇,F(xiàn)alse表示復選框未被選擇。912023/11/5C#程序設計有用教程
復選框控件
〔3〕CheckState屬性。反映該復選框的狀態(tài),有3個可選值。Checked:表示復選框當前被選中。Unchecked:表示復選框當前未被選中。Indeterminate:表示復選框當前狀態(tài)未定,此時該復選框呈灰色。2.響應的大事復選框響應的大事主要是Click大事、CheckedChanged大事和CheckStateChanged大事。當鼠標單擊復選框時,觸發(fā)Click大事,并且轉變Checked屬性值和CheckState屬性值。Checked屬性值的轉變,同時將觸發(fā)CheckedChanged大事;CheckState屬性值的轉變,同時將觸發(fā)CheckStateChanged大事。922023/11/5C#程序設計有用教程
復選框控件
【例9-11】復選框控件的運用。通過選擇不同的復選框,實現(xiàn)輸出選中的業(yè)余愛好。實現(xiàn)步驟如下:〔1〕創(chuàng)立一個Windows窗體應用的程序,添加如圖9-19所示的控件?!?〕編寫“確定”按鈕btnOk和“退出”btnExit的代碼。其中“確定”按鈕功能為顯示一個對話框,輸出用戶用戶所填內容;“退出”按鈕功能為完畢程序。932023/11/5C#程序設計有用教程
復選框控件
942023/11/5C#程序設計有用教程
復選框控件
〔3〕程序的完整代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;
namespaceUseCheckBox{publicpartialclassForm1:Form{
952023/11/5C#程序設計有用教程
復選框控件
publicForm1{InitializeComponent;}
//檢查用戶輸入的信息是否有效privatevoidtxtName_Validating(objectsender,CancelEventArgse){if(txtName.Text.Trim==string.Empty){MessageBox.Show(“姓名為空,請重新輸入!“);txtName.Focus;}}962023/11/5C#程序設計有用教程
復選框控件
privatevoidbtnExit_Click(objectsender,EventArgse){this.Close;}972023/11/5C#程序設計有用教程
復選框控件
privatevoidbtnOk_Click(objectsender,EventArgse){stringstrUser=string.Empty;strUser=“姓名:“+txtName.Text+“\n“;strUser=strUser+“業(yè)余愛好:“+(chkMovie.Checked?“電影“:““)+(chkMusic.Checked?“音樂“:““)+(chkSport.Checked?“體育“:““)+“\n“;DialogResultresult=MessageBox.Show(strUser,“信息確認“,MessageBoxButtons.OKCancel,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1);if(result==DialogResult.OK){txtName.Clear;chkMovie.Checked=false;chkMusic.Checked=false;chkSport.Checked=false;}}
982023/11/5C#程序設計有用教程
復選框控件
privatevoidbtnExit_MouseEnter(objectsender,EventArgse){txtName.CausesValidation=false;}
privatevoidbtnExit_MouseLeave(objectsender,EventArgse){txtName.CausesValidation=true;}}}992023/11/5C#程序設計有用教程
復選框控件
單擊“信息確認”對話框中的“確定”按鈕,將會去除已輸入的內容,包括復選框的選中狀態(tài)。100程序運行,輸入相應的內容,如圖9-20所示。單擊“確定”按鈕后,彈出的對話框如圖9-21所示。2023/11/5C#程序設計有用教程
復選框控件
說明:代碼中用到了MessageBox的另一個構造方法,這種方法使得MessageBox的外觀更加多樣化,包括了MessageBox的標題〔Title〕、圖標〔MessageBoxIcons〕的按鈕〔MessageBoxButtons〕。另外,程序中還編寫了btnExit的Enter和Leave大事,目的是為了在單擊“退出”按鈕時,不引發(fā)TextBox控件的Validating大事,防止多余的提示;在Leave大事中又恢復TextBox控件的Validating大事。讀者可以先刪除該段代碼,以查看相應的效果。1012023/11/5C#程序設計有用教程
9.4.6列表框
列表框〔ListBox〕控件供給一個工程列表,用戶可以從中選擇一項或多項。在列表框內的工程稱為列表框,列表項的參與是按確定的挨次進展的,這個挨次號稱為索引號。列表框內列表項的索引號是從0開頭的,即第一個參與的列表項索引號為0,其余索引項的索引號依次類推。1022023/11/5C#程序設計有用教程
9.4.6列表框
1.常用屬性〔1〕Items屬性通過該屬性,設置或獵取列表框的項。用戶可以事先在屬性窗口中設置,也可以在程序中進展設置?!?〕Multicolumn屬性用于設置列表框是否多列列表框,默認值為False,表示列表項一單列顯示。1032023/11/5C#程序設計有用教程
9.4.6列表框
〔3〕SelectionMode屬性該屬性用于設定列表框選擇屬性,共有4個可選值:None:表示不允許進展選擇。One:表示只允許選擇其中一項。此值為默認值。MultiSimple:表示允許同時選擇多個列表項。MultiExtended:用鼠標和Shift鍵組合可以選擇連續(xù)的列表項;用鼠標和Ctrl鍵組合可以選擇不連續(xù)的列表項。1042023/11/5C#程序設計有用教程
9.4.6列表框
〔4〕SelectedItem屬性獵取或設置列表框中的當前選定項。〔5〕SelectedItems屬性獵取或設置列表框中當前選定項的集合?!?〕SelectedIndex屬性獵取或設置列表框中的當前選定項的從零開頭的索引。在編程時,用戶可以捕獲該屬性值,然后依據(jù)該值來進展相應的動作。留意:上述的屬性中,前2項為外觀屬性;而后4項為行為屬性。1052023/11/5C#程序設計有用教程
9.4.6列表框
2.響應的大事列表框控件除了能響應常用的Click、DoubleClick、GotFocus、LostFocus等大事外,還可響應特有的SelectedIndexChanged大事。SelectedIndexChanged大事:當用戶轉變列表中的選擇時,將會觸發(fā)此大事。1062023/11/5C#程序設計有用教程
9.4.6列表框
3.常用的方法列表框的列表項可以在屬性窗口中通過Item屬性來設置,也可以在應用程序中用Items.Add或Items.Insert方法來添加,用Items.Remove或Items.Clear方法刪除?!?〕Items.Add方法Items.Add方法的功能是把一個列表項參與列表框的底部。其一般格式如下: Listname.Items.Add(Item)其中,Listname是列表控件的名稱;Items是要參與列表框的列表框,必需是一個字符串表達式。1072023/11/5C#程序設計有用教程
9.4.6列表框
〔2〕Items.Insert方法Items.Insert方法的功能是把一個列表項插入到列表框的指定位置。其一般格式如下: Listname.Items.Insert(Index,列表項)其中,Index是新增列表項在列表框中的指定位置。Index值為0時,表示列表項添加到列表框的第一個位置?!?〕Items.Remove方法Items.Remove方法的功能是去除列表框中的指定列表項。其一般格式如下: Listname.Items.Remove(Item)1082023/11/5C#程序設計有用教程
9.4.6列表框
〔4〕Items.Clear方法Items.Clear方法的功能是去除列表框中的全部列表項。其一般格式如下: Listname.Items.Clear1092023/11/5C#程序設計有用教程
9.4.6列表框
【例9-12】列表框控件的運用。〔1〕創(chuàng)立一個Windows窗體應用程序,在窗體上添加如圖9-22所示的控件。其中,ListBox控件名稱如以下圖,4個按鈕的名稱依次為btnRight、btnRightAll、btnLeftAll和btnLeft。〔2〕更改lstLeft控件的Items屬性,彈出如圖9-23所示的字符串集合編輯器。依次輸入星期日、星期一、星期二、星期三、星期四、星期五和星期六。單擊“確定”按鈕,得到如圖9-24所示的窗體?!?〕編寫各個按鈕的代碼,功能為使得ListBox控件的選項在lstLeft和lstRight控件之間移動,并將記錄輸出到lstBottom列表框控件中。1102023/11/5C#程序設計有用教程
9.4.6列表框
1112023/11/5C#程序設計有用教程
9.4.6列表框
〔4〕完整的程序代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025招標控制價建設工程造價咨詢合同
- 2025儀器儀表購銷合同
- 2024年刮泥機項目投資申請報告
- 醫(yī)療健康產業(yè)對宏觀經濟的拉動作用研究
- 2025年滬教版必修3生物上冊階段測試試卷含答案
- 2025年粵人版選擇性必修3地理下冊月考試卷
- 2024年滬教新版必修1物理上冊月考試卷
- 二零二五版牛只運輸與養(yǎng)殖基地環(huán)保責任合同3篇
- 二零二五年度模具加工環(huán)保工藝與技術改造合同4篇
- 二零二五年度園林綠化苗木育種合同3篇
- 開展課外讀物負面清單管理的具體實施舉措方案
- 2025年云南中煙工業(yè)限責任公司招聘420人高頻重點提升(共500題)附帶答案詳解
- 2025-2030年中國洗衣液市場未來發(fā)展趨勢及前景調研分析報告
- 2024解析:第三章物態(tài)變化-基礎練(解析版)
- 北京市房屋租賃合同自行成交版北京市房屋租賃合同自行成交版
- 《AM聚丙烯酰胺》課件
- 系統(tǒng)動力學課件與案例分析
- 《智能網聯(lián)汽車智能傳感器測試與裝調》電子教案
- 客戶分級管理(標準版)課件
- GB/T 32399-2024信息技術云計算參考架構
- 人教版數(shù)學七年級下冊數(shù)據(jù)的收集整理與描述小結
評論
0/150
提交評論