




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上第三章 基于C#.NET的程序設(shè)計(jì)與開發(fā)在這一部分中,您將從零開始學(xué)習(xí)應(yīng)用C#.NET進(jìn)行Windows編程的相關(guān)知識。即使您以前沒有接觸過C#.NET,沒有接觸過C#語言,也無需擔(dān)心,相信通過這一章的學(xué)習(xí),您能迅速邁進(jìn)Visual C#.NET 的編程大門。在這一章中,我們將首先介紹Visual Studio 2005 編程環(huán)境,隨后介紹C#語言,之后重點(diǎn)介紹幾個常用控件,再以一些簡單的實(shí)例來展示具體的操作辦法,最后留出相關(guān)問題供您思考拓展。1 Visual Studio 2005 IDE 簡介這這一節(jié)中,您將了解到Visual Studio 2005 集成編譯環(huán)境
2、(Integrated Development Environment,IDE)的基本布局及其主要功能,方便之后的程序設(shè)計(jì)。首先啟動Visual Studio 2005,界面如圖3.1所示。圖3.1 Visual Studio 2005啟動界面點(diǎn)擊菜單欄上的“文件”>“新建項(xiàng)目”,在項(xiàng)目類型中選擇Visual C#的“Windows應(yīng)用程序”,如圖3.2所示。圖3.2 新建項(xiàng)目對話框在此之后進(jìn)入了C#.NET集成開發(fā)環(huán)境,如圖3.3所示。展示在我們面前的就是一個常規(guī)布局,下面我們來認(rèn)識一下各部分的功能。圖3.3 C#.net集成開發(fā)環(huán)境布局1.1 菜單欄菜單欄位于窗口的正上方(在標(biāo)題欄的
3、下面),包含了C#.NET 中的所有命令,下面我們分別來看一下各菜單的主要功能。文件:每個Windows 程序幾乎都有文件菜單。它已經(jīng)成為一個標(biāo)準(zhǔn)。這個菜單中還有新建、打開和關(guān)閉單個文件和整個項(xiàng)目的命令選項(xiàng)。編輯:編輯菜單提供的選項(xiàng)有撤消、重復(fù)、剪切、復(fù)制、粘貼、刪除、查找等。視圖:視圖菜單可以快速訪問構(gòu)成IDE的各種窗口,如解決方案資源管理器,屬性窗口,輸出窗口和工具箱等。項(xiàng)目:項(xiàng)目菜單允許在應(yīng)用程序中添加各種文件,如窗體和類。生成:當(dāng)編寫完程序后,希望在不適用C#.NET 環(huán)境的情況下運(yùn)用它時,就應(yīng)使用生成菜單。調(diào)試:調(diào)試菜單允許在C#.NET IDE 中啟動和停止運(yùn)行應(yīng)用程序。它也允許訪
4、問C#.NET調(diào)試器,而調(diào)試器允許單步執(zhí)行代碼,觀察它的執(zhí)行情況。數(shù)據(jù):數(shù)據(jù)菜單可使用數(shù)據(jù)庫中的信息。格式:格式菜單中的命令選項(xiàng)可管理如何把所創(chuàng)建的控件顯示到窗體上。工具:工具菜單中有配置 C#.NET IDE 的命令,以及到其他已安裝的外部工具的鏈接。窗口:窗口菜單也是標(biāo)準(zhǔn)的,它允許像Word 和Excel 那樣同時打開多個窗口。這個菜單中的命令允許在IDE中切換窗口。幫助:利用幫助菜單可以訪問Visual Studio.NET的幫助文檔,訪問該文檔有多種方式,如通過目錄、索引或者搜索。1.2 工具欄工具欄位于菜單欄的正下方,IDE中有許多工具欄,包括格式、圖像編輯和文本編輯等,這些工具欄可
5、通過“視圖”菜單下的“工具欄”菜單選項(xiàng)在IDE中添加或刪除。每個工具欄都提供了對常用命令的快速訪問,而不必選擇相應(yīng)的菜單選項(xiàng)。當(dāng)鼠標(biāo)在某個工具上懸停的時候,則會出現(xiàn)對該命令的解釋。1.3 工具箱在IDE 的左側(cè)或者右側(cè),有一個豎直排布的按鈕(工具箱),單擊,可以彈出以下界面,如果沒有該按鈕則可以通過點(diǎn)擊“視圖”->“工具欄”使之顯示出來,如圖3.4所示。圖3.4 工具箱工具箱中包含了能夠運(yùn)用到 Windows編程中的所有控件,除了Windows默認(rèn)的一些標(biāo)準(zhǔn)控件之外,您還可以添加一些自定義控件或者第三方控件(如我們后面將要使用到的ArcGIS控件)。1.4 解決方案管理器解決方案資源管理
6、器位于IDE 的右上方,這是一個展示了整個工程的樹結(jié)構(gòu),如圖3.5所示。如果沒有,點(diǎn)擊工具欄上的“解決方案資源管理器”按鈕彈出,如圖3.6所示。從解決方案工程管理器中可以清楚的看到各窗體(Form)的名字,類的名字,模塊以及包含的資源、引用等。圖3.5 解決方案管理器圖3.6 “解決方案資源管理器”工具1.5 屬性窗口屬性窗口位于IDE的右下方,它隨著當(dāng)前選擇控件的變化而變化。在屬性窗口中能快速調(diào)整各控件的屬性,如控件的名稱、顯示文字、顏色、大小、位置等,如圖3.7所示。圖3.7 屬性窗口1.6 文檔大綱點(diǎn)擊通過如圖3.8所示的文檔大綱的工具按鈕,彈出文檔大綱,如圖3.9所示。 圖3.8 “文
7、檔大綱”的工具按鈕文檔大綱用于顯示控件與控件的層次關(guān)系,通過文檔大綱可以很方便地查看到父控件和該控件的子控件。 圖3.9 文檔大綱2 C#語言簡介C#(C sharp)是微軟(Microsoft)在2000年6月發(fā)布的一種新的編程語言,是微軟為.NET Framework量身訂做的程序語言,C#擁有C/C+的強(qiáng)大功能以及Visual Basic簡單易用的特性,是第一個組件導(dǎo)向(Component-oriented)的程序語言,和C+和Java一樣亦為對象導(dǎo)向(object-oriented)的程序語言。C#看起來與Java有著驚人的相似:它包括了諸如單一繼承、界面,與Java幾乎同樣的語法,和
8、編譯成中間代碼再運(yùn)行的過程。但是C#與Java有著明顯的不同,它與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。C#語言定義主要是從C和C+繼承而來的,而且語言中的許多元素也反映了這一點(diǎn)。例如定義變量、關(guān)系運(yùn)算等。如果你有C或者C+的基礎(chǔ),那么學(xué)習(xí)C#語言就相對容易了。12.1 變量聲明聲明變量就是指定變量的名稱和類型。C#變量聲明由一個類型和跟在后面的一個或多個變量組成,多個變量之間需用逗號分開,聲明以分號結(jié)束。在聲明變量時,還可以初始化變量。C#變量名是一種標(biāo)識符,需要符合標(biāo)識符的命名規(guī)則。變量名是區(qū)分大小寫的,基本的變量名命名規(guī)則包括:變量只
9、能由字母、數(shù)字或下劃線組成;變量名的第一個符號不能是數(shù)字;不能使用關(guān)鍵字作變量名;一旦在一個語句塊中定義了一個變量,在其作用域內(nèi)就不能再定義同名變量,否則將發(fā)生編譯錯誤。double dblV1, dblV2;/局部變量的聲明int intVal = 835; /局部變量的聲明并賦值int intVal = 835; /局部變量的聲明并賦值public string mFormName;/公有成員變量的聲明private string mFormName;/私有成員變量的聲明protected string mFormName;/保護(hù)成員變量的聲明2.2 表達(dá)式與運(yùn)算符表達(dá)式是由運(yùn)算符(Ope
10、rator)和操作數(shù)(operand)構(gòu)成的序列。運(yùn)算符指示對操作數(shù)進(jìn)行何種運(yùn)算。例如,+、-、*、/和new都是運(yùn)算符。操作數(shù)是指計(jì)算機(jī)指令中進(jìn)行數(shù)字運(yùn)算的量,例如:在比較指令中,操作數(shù)則指定進(jìn)行比較的兩個數(shù)值,包括文本、常量、變量和表達(dá)式。在C#中,若表達(dá)式最終的計(jì)算結(jié)果為所需的類型值,表達(dá)式就可以出現(xiàn)在需要值或?qū)ο蟮娜我馕恢?,如下面的示例代碼:double dblV1 = 123.45;double dblV2 = 24.312;double dblV3 = Math.Sqrt(dblV1 * dblV1 + dblV2 * dblV2);MessageBox.Show(dblV3.To
11、String(), "信息提示");表達(dá)式dblV1 * dblV1 + dblV2 * dblV2作為方法Math.Sqrt的參數(shù)使用,表達(dá)式dblV3.ToString()又是方法MessageBox的參數(shù)。表達(dá)式包括常量表達(dá)式、布爾表達(dá)式等。運(yùn)算符是專門用來處理數(shù)據(jù)運(yùn)算的特殊符號,對操作數(shù)進(jìn)行運(yùn)算,并產(chǎn)生運(yùn)算結(jié)果。運(yùn)算符包括基本運(yùn)算符(.、( )、 、+、-、new、sizeof、typeof、checked和unchecked等)、賦值運(yùn)算符(=、+=、-=、*=、/=、%=、&=、|=、=、<<=和>>=)、算術(shù)運(yùn)算符(+、-、*、
12、/和%)、關(guān)系運(yùn)算符(=、!=、>、<、>=和<=)、邏輯運(yùn)算符等(與(&)、或(|)、異或()和取補(bǔ)()、移位運(yùn)算符(左移位運(yùn)算符<<和右移位運(yùn)算符>>)和三元運(yùn)算符(?:)等。2.3 條件語句if引導(dǎo)的條件語句:格式: if(表達(dá)式1) 語句1;說明:如果表達(dá)式1成立則執(zhí)行語句1,否則不執(zhí)行語句1。例子: if(x > 0) y = 10;if-else 語句:格式: if(表達(dá)式1) 語句1; else 語句2;說明:如果表達(dá)式1成立則執(zhí)行語句1,否則執(zhí)行語句2。例子: if(x > 0) y = 10; else y
13、= 5;if-else if-else語句:格式: if(表達(dá)式1) 語句1; else if(表達(dá)式2) 語句2; else 語句n;說明:這種格式是從上到下逐個對表達(dá)式判斷,一旦發(fā)現(xiàn)條件滿足的表達(dá)式,就執(zhí)行相關(guān)的語句,并跳出判斷,如果都不滿足則執(zhí)行else相應(yīng)的語句。例子: if(x > 0) y = 10; else if(x = 0) y = 5;else y = 1;switch-case語句:格式: switch(變量x) case 常量1: 語句1; case 常量2: 語句2; default:語句n; 說明:這種格式是從上到下逐個將變量x與case后的常量比較,一旦發(fā)現(xiàn)
14、變量x與某個case后的常量相等,則從該語句向后執(zhí)行(注意,如果沒有break,后面的case語句都會執(zhí)行),如果沒有與變量x相等的常量,的執(zhí)行default后的語句。例子: switch(k) case 1: y = 1; break; case 2: y = 10; break; case 3: y = 100; break; default: y = 0; 2.4 循環(huán)語句for循環(huán)語句:格式: for(表達(dá)式1, 表達(dá)式2, 表達(dá)式3) 循環(huán)體內(nèi)語句;說明:先對表達(dá)式1賦初值; 判別表達(dá)式2是否滿足給定條件,若其值為真,滿足循環(huán)條件,則執(zhí)行循環(huán)體內(nèi)語句,然后執(zhí)行表達(dá)式3,進(jìn)入第二次循環(huán)
15、,再判別表達(dá)式2;否則判斷表達(dá)式2的值為假,不滿足條件,就終止for循環(huán),執(zhí)行循環(huán)體外語句。例子: for(i = 0; i < 100; i+) sum += i;while語句:格式: while(表達(dá)式) 循環(huán)體內(nèi)語句;說明:這里的表達(dá)式是循環(huán)能否繼續(xù)下去的條件。只要表達(dá)式為真,則執(zhí)行循環(huán)體內(nèi)語句。否則終止循環(huán),執(zhí)行循環(huán)體外語句。例子: while(i < 100) sum += i;i+;do-while語句:格式: do 循環(huán)體內(nèi)語句; while(表達(dá)式)說明:程序進(jìn)入do-while循環(huán)后,先執(zhí)行循環(huán)體內(nèi)語句,然后判斷表達(dá)式的真假,若為真則進(jìn)行下一次循環(huán),否則為假則終
16、止循環(huán)。該循環(huán)語句的特點(diǎn)是:表達(dá)式為假時也執(zhí)行一次循環(huán)體內(nèi)語句。例子: do sum += i;i+; while(i < 100)2.5 函數(shù)C#和C+對于函數(shù)的定義和使用有很多相同之處,對于這些相同之處不需要一一做詳細(xì)的介紹,具體請參閱C#入門經(jīng)典這本書(這是一本曾成就無數(shù)C#程序員的經(jīng)典名著,最新版為第5版,2010年12月出版,定價99.8元),該節(jié)主要介紹C#特有的特點(diǎn)。(1)函數(shù)參數(shù)引用傳遞與值傳遞C#對函數(shù)參數(shù)做了更明確的標(biāo)示,使得程序更加清晰可讀,通過使用in和out關(guān)鍵字說明了參數(shù)的作用,in修飾的參數(shù)在形參和實(shí)參結(jié)合的時候會生成副本,這樣對形參的修改就不會對實(shí)參產(chǎn)生影
17、響(副作用),因?yàn)檫@個函數(shù)內(nèi)部使用的不是實(shí)參而是生成的那個副本。out關(guān)鍵字函數(shù)對形參的修改會對實(shí)參產(chǎn)生副作用的,這樣out的意思就是說我要用這個參數(shù)作為返回值。這點(diǎn)和C+引用傳遞的語義是類似的,函數(shù)對參數(shù)的修改會反映在實(shí)參上,這樣我就可以得到最終變化的結(jié)果,其語義就是return的作用一樣。如果沒有in、out修飾則默認(rèn)是in.如下面兩個函數(shù):public void InternalMagic(int x) 函數(shù)1 x+=100; public void InternalMagic(in int x) 函數(shù)2 x+=100; public void InternalMagic(out int
18、 x) 函數(shù)3 x+=100; 函數(shù)1和函數(shù)2是一樣的,函數(shù)3則不同,當(dāng)調(diào)用函數(shù)1的時候,傳入的參數(shù)不會改變,而調(diào)用函數(shù)3時,傳入的參數(shù)會自增100.2.函數(shù)的委托委托是一個類,它定義了方法的類型,使得可以將方法當(dāng)作另一個方法的參數(shù)來進(jìn)行傳遞,這種將方法動態(tài)地賦給參數(shù)的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴(kuò)展性,在C#中使用delegate關(guān)鍵字定義委托,然后使用我們熟悉的函數(shù)調(diào)用的語法來調(diào)用委托。如下代碼所示:public delegate void Del(string message);/定義一個委托/創(chuàng)建一個和委托相似的函數(shù)(參數(shù),
19、返回值類型和個數(shù)相同)public static void DelegateMethod(string message) System.Console.WriteLine(message);/使用委托/ 生那么一個委托.Del handler = DelegateMethod;/ 使用委托.handler("Hello World");2.6 面向?qū)ο驝#是一種完全面向?qū)ο蟮恼Z言,他和C+一樣具有類、對象、繼承、多態(tài)等特點(diǎn)。與C+不同的是C#不支持多重繼承。另外,C#多了接口的概念。接口只包含方法、屬性、索引器(有參屬性)、事件四種成員。方法的實(shí)現(xiàn)是在實(shí)現(xiàn)接口的類中完成的,
20、如下面的示例所示:/定義接口interface ISampleInterface void SampleMethod(); /聲明接口的方法 /接口的實(shí)現(xiàn)體class ImplementationClass : ISampleInterface / Explicit interface member implementation: void ISampleInterface.SampleMethod() / Method implementation. static void Main() / Declare an interface instance. ISampleInterface ob
21、j = new ImplementationClass(); / Call the member. obj.SampleMethod(); C#接口的接口彌補(bǔ)了C#在多繼承下的不足,使得C#在面向?qū)ο蠓矫娓油晟?。要想了解更多的關(guān)于C#面向?qū)ο蟮闹R請參閱C#入門經(jīng)典。3 窗體及其控件簡介在這一小節(jié)中,您將接觸到幾個C#.NET 編程中常用的控件及其主要屬性。23.1 窗體(Form控件)Form 表示組成應(yīng)用程序的用戶界面的窗口或?qū)υ捒?。如圖3.10所示,即為一個窗體:圖3.10 窗體(Form控件)在 C#.NET IDE中,支持可視化的編輯,這讓程序員將更多的精力放在程序本身的編寫上,而
22、不用花費(fèi)太大的精力到界面的設(shè)計(jì)。在IDE 中,支持“所見即所得”的模式,也就是說,在編輯過程中各控件的位置與程序?qū)嶋H運(yùn)行中的位置是一樣的(使用程序代碼控制控件的屬性,如尺寸、位置及可見性等除外)。在編輯過程中,F(xiàn)orm 中可以放置不同的控件,用來構(gòu)建應(yīng)用程序。需要插入新的窗體,可以點(diǎn)擊菜單欄中的“項(xiàng)目”>“添加Windows 窗體”,選擇“Windows窗體”添加一個新的窗體。若需要修改已有的窗體名稱,則在解決方案資源管理器中修改(與Windows 中修改文件名類似)。單擊Form,將其激活,點(diǎn)擊右鍵,轉(zhuǎn)到屬性窗口,可以看到Form的屬性,如圖3.11所示。圖3.11 窗體的屬性在 Fo
23、rm 的屬性中,Text 屬性表示窗體的顯示名稱;TopMost 控制窗體是否總是位于應(yīng)用程序最上方;StartPosition 控制窗體生成的時候出現(xiàn)在屏幕上的位置;FormBorderStyle控制窗體的樣式等。具體Form的屬性及時間等信息,請參閱MSDN中的相關(guān)定義及解釋。除此之外,在屬性窗口中還可以對窗體添加事件,例如鼠標(biāo)單擊、雙擊事件,捕獲鍵盤和窗口退出等事件。點(diǎn)擊屬性對話框中的按鈕即可對窗口添加事件,如圖3.12。圖3.12 窗口的事件圖3.12中列出了與Form控件相關(guān)的所有事件,每個事件代表什么請查閱MSDN,在事件填入相應(yīng)的函數(shù)(函數(shù)的名稱要符合C#函數(shù)的命名規(guī)則)則會自動
24、為該窗體添加相應(yīng)的函數(shù),如Click事件的事件處理函數(shù)是OnClick,Form1窗體類中會自動生成一個OnClick函數(shù)。3.2 Label 控件Label控件用于顯示文字、提示、輸出結(jié)果等,是C#編程中常用的控件之一。如圖3.13所示。圖3.13 任務(wù)管理器中的label控件 在Windows任務(wù)管理器中的句柄數(shù)、線程數(shù)、進(jìn)程數(shù)和物理內(nèi)存中的總數(shù)、可用數(shù)和系統(tǒng)緩存等都是典型的Label控件。從工具箱的“公共控件”中點(diǎn)擊Label控件,并將其拖入到Form窗體中,并放入適當(dāng)?shù)奈恢茫纯稍诖绑w中顯示Label控件。與Form窗體一樣,點(diǎn)擊Label控件使其進(jìn)入激活狀態(tài),就可以在屬性窗口中更改L
25、abel的屬性,其中Text屬性是該Label控件顯示的內(nèi)容,是Label控件最常用的屬性,同時還可以為Label控件添加事件,其方法和Form控件相似。3.3 Button控件Button控件是按鈕控件,是C#編程中常用的控件之一,它主要用于制作各種類型的按鈕,如圖3.14所示。圖3.14 Windows計(jì)算器中的按鈕其中按鈕屬性中最常用的是Text,該屬性用于設(shè)置按鈕上顯示的內(nèi)容,最常見的事件是Click事件,該事件是處理按鈕按下后的事件。3.4 TextBox 控件TextBox控件是文本框控件,既可以用來接受用戶輸入,也可以用來做結(jié)果輸出。如圖3.15所示。圖3.15 TextBox控
26、件圖3.15中右邊控件為文本框控件,用于接收用戶的輸入,如果要得到用戶的輸入數(shù)據(jù),則可以訪問該文本框控件的Text屬性,另外還可以接收文件框得到或者失去焦點(diǎn)的事件等。3.5 菜單控件菜單控件分為兩類,一類是界面菜單,另一類是上下文菜單,界面菜單一般位于程序的上面,包括文件、編輯、視圖等,上下文菜單一般是當(dāng)鼠標(biāo)右鍵按下彈出的右鍵菜單,如圖3.16所示。 圖3.16 界面菜單(左)和上下文菜單(右)C#中的界面菜單和上下文菜單是用不同的控件來表示的,界面菜單是MenuStrip控件,上下文菜單是ContextMenuStrip控件。下面對它們的用法一一介紹。(1)MenuStrip的用法:從工具箱
27、的“菜單和工具欄”中點(diǎn)擊MenuStrip控件,然后再點(diǎn)擊或者拖動到目標(biāo)Form控件中去,即可以為該Form控件添加一個界面菜單。一般界面菜單都在Form控件的最上方,也可以通過改變MenuStrip的Dock屬性來改變MenuStrip控件的位置。Dock屬性包括Top、Bottom、Left、Right、Fill和None六種選擇,分別代表將該控件放置在父控件的上方、下方、左方、右方、充滿父控件和不設(shè)置。一旦創(chuàng)建了MenuStrip就可以創(chuàng)建菜單項(xiàng),菜單項(xiàng)分為五種類型,一種是ToolStripMenuStrip,該類型就是最常用的一種菜單類型,它類似于按鈕,按下即可觸發(fā)特定的菜單事件。如圖
28、3.17中的“安全性設(shè)置(E)”就是ToolStripMenuStrip類型的菜單項(xiàng)。除此之外,還有MenuStrip、ComboBox、TextBox和Separator類型的菜單項(xiàng),可以通過點(diǎn)擊菜單項(xiàng)后面的三角符號選擇菜單項(xiàng)的類型。圖3.17 ToolStripMenuStrip類型的菜單項(xiàng)圖3.18 選擇菜單項(xiàng)類型其中MenuStrip表示級聯(lián)菜單,如圖3.18。ComboBox表示將菜單項(xiàng)改成如復(fù)選框類型的菜單項(xiàng),TextBox是將菜單項(xiàng)改成可輸入的文本編輯框,而Separator是將該菜單項(xiàng)目改成菜單分隔符,雙擊該菜單項(xiàng),即可為該菜單項(xiàng)加入一個單擊事件,按delete鍵可以將該菜單項(xiàng)
29、刪除。(2)ContextMenuStrip的用法:ContextMenuStrip菜單項(xiàng)的添加、編輯和為菜單項(xiàng)添加事件與MenuStrip相同,它與MenuStrip不同的是彈出的時機(jī)不同,它需要當(dāng)鼠標(biāo)右擊的時候彈出。此時只需要設(shè)置窗體控件中的ContextMenuStrip屬性為新建的ContextMenuStrip對象名稱就可以了,如圖3.19所示。圖3.19 設(shè)置窗體的ContextMenuStrip屬性3.6 ToolStrip 控件ToolStrip控件就是工具條控件,通過它可以制作各式各樣的工具條,與菜單項(xiàng)類似,工具條上的工具項(xiàng)也有很多類型,它可以是按鈕,可以是復(fù)選框,可以是文本
30、框,也可以是一個進(jìn)度條等。如圖3.20所示。圖3.20 不同類型的工具項(xiàng)其中button類型的工具項(xiàng)是在工具條上添加一個按鈕,注意一般工具條上的按鈕都是有圖標(biāo)的,因此,必須要為工具條的上的按鈕指定Image屬性。Image屬性可以從磁盤文件中導(dǎo)入圖片資源,也可以用項(xiàng)目自帶的圖片資源。Label類型的工具項(xiàng)是在工具條中加入一個Label對象。其他的如SplitButton、DropDownButton、Separator、ComboBox、TextBox和ProgressBar請查閱MSDN或者親自試驗(yàn)一下。在此不需一一累述。3.7 常用對話框C#還提供了一些常用的對話框,如打開對話框、保存對話
31、框、字體選擇對話框和顏色對話框等。不需要對這些對話框重新設(shè)計(jì),只需要將這些對話框控件拖入到目標(biāo)窗體中直接調(diào)用即可。下面著重講述一下打開對話框的使用方法,其他對話框的使用方法與此相同,不需要一一累述。第一步:設(shè)置對話框的彈出事件。在此,我們用一個按鈕事件來表示,即點(diǎn)擊按鈕彈出打開對話框,在目標(biāo)窗口Form1控件中加入一個按鈕控件,將按鈕控件的Text屬性改為“打開對話框”,同時將“設(shè)計(jì)”中的Name屬性改為” OpenDialog”(此步驟可以不要,如果不要,系統(tǒng)會自動生成一個隨機(jī)的無意義名字,建議將其改成一個有意義的名稱),如圖3.21。圖3.21 “打開對話框”按鈕第二步:從工具箱中對話框選
32、項(xiàng)中選擇OpenFileDialog控件,并將“設(shè)計(jì)”中的Name屬性改為“mOpenFileDialog”。第三步:雙擊“打開對話框”按鈕,進(jìn)入該按鈕的單擊事件,在該事件中顯示打開對話框。其中FileName記錄了打開對話框中選中的文件,另外OpenFileDialog控件還支持多選,只需要將OpenFileDialog屬性中的Multiselect屬性改為“true”就行了,在多選的情況下,要得到選擇的所用文件就要訪問OpenFileDialog對象的FileNames變量,而不能訪問FileName變量,F(xiàn)ileName只能在單選條件下使用。4 計(jì)算器的制作14.1 界面的制作如圖3.2
33、2為即將設(shè)計(jì)的實(shí)驗(yàn)程序的界面。圖3.22 計(jì)算器界面 根據(jù)圖3.22界面的布局將菜單、按鈕和文本框控件加入的合適的位置。為了使得按鈕的大小相同,按鈕之間排列整齊,需要用到布局工具條,如圖3.23。圖3.23 布局工具條布局工具條主要提供了控件與控件之間的大小相同、左對齊、右對齊和居中對齊等功能。選中多個控件(拉框選擇或者按著Ctrl鍵逐個點(diǎn)選),點(diǎn)擊“左對齊”按鈕,則選中的控件就會自動左對齊;點(diǎn)擊“使得大小相同”按鈕,則選中的控件就會自動設(shè)置為相同的大小。更改按鈕控件的ForeColor屬性可以設(shè)置按鈕顯示文字的顏色,如圖3.22中“Backspace”按鈕的文本顏色是紅色,則可以選中Back
34、space按鈕,在屬性窗口中找到ForeColor屬性設(shè)置顏色就可以了。禁用輸入文本框的鍵盤輸入功能:選中文本框,為文本框添加一個KeyPress事件。在KeyPress事件中取消鍵盤輸入。這時,通過鍵盤輸入的字符無法顯示在文本框中。其代碼如下:/不允許顯示文本框鍵盤輸入private void OnKeyPress(object sender, KeyPressEventArgs e)/取消輸入e.Handled = true;使文本框的文字顯示在右側(cè),默認(rèn)情況下,文本框的文字顯示在左側(cè),為了使文本框的文字顯示在右側(cè),要設(shè)置文本框的TextAlign屬性為Right。4.2 命名規(guī)則和添加事
35、件為了增加代碼的可讀性以及方便后續(xù)代碼的編寫,強(qiáng)烈建議為每個按鈕命一個有意義的名字,不要用Virsual Studio 2005直接隨機(jī)生成的名字,本程序的控件的命名如表3.1。表3.1 計(jì)算器控件命名控件名稱mOutput-mNum0-mNum9mPositivemPointmDividemMultiplymSubtractmAddmSqrtmModmReciprocalmEqualmBackSpacemClearAbout為所有的按鈕添加Click事件,雙擊按鈕即可為按鈕自動添加Click事件,也可以通過屬性窗口的事件頁面來添加事件。4.3 數(shù)字鍵輸入事件的處理由于數(shù)字鍵0-9按鈕的處理是
36、一樣的,所不同僅僅是傳入的字符參數(shù)不同,如0號數(shù)字鍵傳入的字符是“0”,因此可以把所有數(shù)字鍵放在一個函數(shù)中統(tǒng)一處理。在處理數(shù)字鍵事件的時候要考慮以下兩個問題:(1) 當(dāng)按下了符號鍵(+,-,*,/,%,=),要先將mOutput控件中的數(shù)據(jù)清空。(2)追加字符的位置,當(dāng)按下小數(shù)點(diǎn)鍵的時候,要將字符追加到mOutput顯示字符的末尾,如果沒有按下小數(shù)點(diǎn)鍵,則將字符追加到小數(shù)點(diǎn)前一位。弄清了以上兩個問題后,數(shù)字鍵輸入事件的處理就好辦了,其代碼如下: /*/ /* 數(shù)字鍵0-9按下事件 */ /*/ private void mNum0_Click(object sender, EventArgs
37、e) NumberKeyDown("0"); private void mNum1_Click(object sender, EventArgs e) NumberKeyDown("1"); / 2-9 數(shù)字鍵與上述相同 /*/ /* 處理數(shù)字鍵按下事件,其中參數(shù)key記錄按下了那個數(shù)字鍵 */ /*/ private void NumberKeyDown(string key) if (mSignPress)/等號鍵是否按下,如果按下則將mOutput中的內(nèi)容清空 mOutput.Text = "0." mSignPress = f
38、alse; /得到文本框的內(nèi)容 string outString = mOutput.Text; if(mPointPress)/小數(shù)點(diǎn)鍵已經(jīng)按下,在小數(shù)點(diǎn)后追加數(shù)字 outString += key; else/小數(shù)點(diǎn)鍵沒有按下,在小數(shù)點(diǎn)前追加數(shù)字 /小數(shù)點(diǎn)在字符串中的位置 int pos = outString.IndexOf('.'); /得到最高位數(shù)字 string highest = outString.Substring(0, 1); /得到小數(shù)點(diǎn)前的字符串 string priString = outString.Substring(0, pos); /得到小數(shù)點(diǎn)后的字符串 string nextString = outString.Substring(pos+1); /字符轉(zhuǎn)整型 int intigrate = int.Parse(highest); if (intigrate = 0)/最高位數(shù)字為0,則替換整數(shù)部分 priString = key; else/最高位數(shù)字不為0,則向后追加 priString += key; /整合成輸出結(jié)果 outString = priString + ".&qu
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 探索商業(yè)美術(shù)設(shè)計(jì)師考試新理念試題及答案
- 廣西毛概期末試題及答案
- 民法基礎(chǔ)考試試題及答案
- 2024年廣告設(shè)計(jì)師用戶體驗(yàn)設(shè)計(jì)能力試題及答案
- 梅州二模試題及答案政治
- 國際美術(shù)設(shè)計(jì)師社交技能與影響力試題及答案
- 系統(tǒng)化設(shè)計(jì)思維的培養(yǎng)試題及答案
- 煤礦電梯考試題及答案
- 奇葩國考試題及答案
- 廣告設(shè)計(jì)師考試設(shè)計(jì)實(shí)踐題型及答案
- 《運(yùn)動健康知識講座》課件
- 熱射病的基礎(chǔ)護(hù)理
- 線性代數(shù)知到智慧樹章節(jié)測試課后答案2024年秋南京理工大學(xué)
- 電力增容項(xiàng)目施工組織設(shè)計(jì)
- 職業(yè)衛(wèi)生技術(shù)服務(wù)機(jī)構(gòu)檢測人員考試真題題庫
- DB35T 2212-2024消防遠(yuǎn)程監(jiān)控系統(tǒng)技術(shù)要求
- 超市保證食品安全的規(guī)章制度
- 微風(fēng)發(fā)電審批流程詳解
- 【課件】人居與環(huán)境-詩意的棲居+課件高中美術(shù)人美版(2019)+必修+美術(shù)鑒賞
- 抖音本地生活商家直播培訓(xùn)
- 6.3基層群眾自治制度 說課課件高中政治統(tǒng)編版必修三政治與法治
評論
0/150
提交評論