實習指導書-第三章-基于C#.NET的程序設計與開發(fā)_第1頁
實習指導書-第三章-基于C#.NET的程序設計與開發(fā)_第2頁
實習指導書-第三章-基于C#.NET的程序設計與開發(fā)_第3頁
實習指導書-第三章-基于C#.NET的程序設計與開發(fā)_第4頁
實習指導書-第三章-基于C#.NET的程序設計與開發(fā)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上第三章 基于C#.NET的程序設計與開發(fā)在這一部分中,您將從零開始學習應用C#.NET進行Windows編程的相關知識。即使您以前沒有接觸過C#.NET,沒有接觸過C#語言,也無需擔心,相信通過這一章的學習,您能迅速邁進Visual C#.NET 的編程大門。在這一章中,我們將首先介紹Visual Studio 2005 編程環(huán)境,隨后介紹C#語言,之后重點介紹幾個常用控件,再以一些簡單的實例來展示具體的操作辦法,最后留出相關問題供您思考拓展。1 Visual Studio 2005 IDE 簡介這這一節(jié)中,您將了解到Visual Studio 2005 集成編譯環(huán)境

2、(Integrated Development Environment,IDE)的基本布局及其主要功能,方便之后的程序設計。首先啟動Visual Studio 2005,界面如圖3.1所示。圖3.1 Visual Studio 2005啟動界面點擊菜單欄上的“文件”>“新建項目”,在項目類型中選擇Visual C#的“Windows應用程序”,如圖3.2所示。圖3.2 新建項目對話框在此之后進入了C#.NET集成開發(fā)環(huán)境,如圖3.3所示。展示在我們面前的就是一個常規(guī)布局,下面我們來認識一下各部分的功能。圖3.3 C#.net集成開發(fā)環(huán)境布局1.1 菜單欄菜單欄位于窗口的正上方(在標題欄的

3、下面),包含了C#.NET 中的所有命令,下面我們分別來看一下各菜單的主要功能。文件:每個Windows 程序幾乎都有文件菜單。它已經成為一個標準。這個菜單中還有新建、打開和關閉單個文件和整個項目的命令選項。編輯:編輯菜單提供的選項有撤消、重復、剪切、復制、粘貼、刪除、查找等。視圖:視圖菜單可以快速訪問構成IDE的各種窗口,如解決方案資源管理器,屬性窗口,輸出窗口和工具箱等。項目:項目菜單允許在應用程序中添加各種文件,如窗體和類。生成:當編寫完程序后,希望在不適用C#.NET 環(huán)境的情況下運用它時,就應使用生成菜單。調試:調試菜單允許在C#.NET IDE 中啟動和停止運行應用程序。它也允許訪

4、問C#.NET調試器,而調試器允許單步執(zhí)行代碼,觀察它的執(zhí)行情況。數據:數據菜單可使用數據庫中的信息。格式:格式菜單中的命令選項可管理如何把所創(chuàng)建的控件顯示到窗體上。工具:工具菜單中有配置 C#.NET IDE 的命令,以及到其他已安裝的外部工具的鏈接。窗口:窗口菜單也是標準的,它允許像Word 和Excel 那樣同時打開多個窗口。這個菜單中的命令允許在IDE中切換窗口。幫助:利用幫助菜單可以訪問Visual Studio.NET的幫助文檔,訪問該文檔有多種方式,如通過目錄、索引或者搜索。1.2 工具欄工具欄位于菜單欄的正下方,IDE中有許多工具欄,包括格式、圖像編輯和文本編輯等,這些工具欄可

5、通過“視圖”菜單下的“工具欄”菜單選項在IDE中添加或刪除。每個工具欄都提供了對常用命令的快速訪問,而不必選擇相應的菜單選項。當鼠標在某個工具上懸停的時候,則會出現對該命令的解釋。1.3 工具箱在IDE 的左側或者右側,有一個豎直排布的按鈕(工具箱),單擊,可以彈出以下界面,如果沒有該按鈕則可以通過點擊“視圖”->“工具欄”使之顯示出來,如圖3.4所示。圖3.4 工具箱工具箱中包含了能夠運用到 Windows編程中的所有控件,除了Windows默認的一些標準控件之外,您還可以添加一些自定義控件或者第三方控件(如我們后面將要使用到的ArcGIS控件)。1.4 解決方案管理器解決方案資源管理

6、器位于IDE 的右上方,這是一個展示了整個工程的樹結構,如圖3.5所示。如果沒有,點擊工具欄上的“解決方案資源管理器”按鈕彈出,如圖3.6所示。從解決方案工程管理器中可以清楚的看到各窗體(Form)的名字,類的名字,模塊以及包含的資源、引用等。圖3.5 解決方案管理器圖3.6 “解決方案資源管理器”工具1.5 屬性窗口屬性窗口位于IDE的右下方,它隨著當前選擇控件的變化而變化。在屬性窗口中能快速調整各控件的屬性,如控件的名稱、顯示文字、顏色、大小、位置等,如圖3.7所示。圖3.7 屬性窗口1.6 文檔大綱點擊通過如圖3.8所示的文檔大綱的工具按鈕,彈出文檔大綱,如圖3.9所示。 圖3.8 “文

7、檔大綱”的工具按鈕文檔大綱用于顯示控件與控件的層次關系,通過文檔大綱可以很方便地查看到父控件和該控件的子控件。 圖3.9 文檔大綱2 C#語言簡介C#(C sharp)是微軟(Microsoft)在2000年6月發(fā)布的一種新的編程語言,是微軟為.NET Framework量身訂做的程序語言,C#擁有C/C+的強大功能以及Visual Basic簡單易用的特性,是第一個組件導向(Component-oriented)的程序語言,和C+和Java一樣亦為對象導向(object-oriented)的程序語言。C#看起來與Java有著驚人的相似:它包括了諸如單一繼承、界面,與Java幾乎同樣的語法,和

8、編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網絡框架的主角。C#語言定義主要是從C和C+繼承而來的,而且語言中的許多元素也反映了這一點。例如定義變量、關系運算等。如果你有C或者C+的基礎,那么學習C#語言就相對容易了。12.1 變量聲明聲明變量就是指定變量的名稱和類型。C#變量聲明由一個類型和跟在后面的一個或多個變量組成,多個變量之間需用逗號分開,聲明以分號結束。在聲明變量時,還可以初始化變量。C#變量名是一種標識符,需要符合標識符的命名規(guī)則。變量名是區(qū)分大小寫的,基本的變量名命名規(guī)則包括:變量只

9、能由字母、數字或下劃線組成;變量名的第一個符號不能是數字;不能使用關鍵字作變量名;一旦在一個語句塊中定義了一個變量,在其作用域內就不能再定義同名變量,否則將發(fā)生編譯錯誤。double dblV1, dblV2;/局部變量的聲明int intVal = 835; /局部變量的聲明并賦值int intVal = 835; /局部變量的聲明并賦值public string mFormName;/公有成員變量的聲明private string mFormName;/私有成員變量的聲明protected string mFormName;/保護成員變量的聲明2.2 表達式與運算符表達式是由運算符(Ope

10、rator)和操作數(operand)構成的序列。運算符指示對操作數進行何種運算。例如,+、-、*、/和new都是運算符。操作數是指計算機指令中進行數字運算的量,例如:在比較指令中,操作數則指定進行比較的兩個數值,包括文本、常量、變量和表達式。在C#中,若表達式最終的計算結果為所需的類型值,表達式就可以出現在需要值或對象的任意位置,如下面的示例代碼:double dblV1 = 123.45;double dblV2 = 24.312;double dblV3 = Math.Sqrt(dblV1 * dblV1 + dblV2 * dblV2);MessageBox.Show(dblV3.To

11、String(), "信息提示");表達式dblV1 * dblV1 + dblV2 * dblV2作為方法Math.Sqrt的參數使用,表達式dblV3.ToString()又是方法MessageBox的參數。表達式包括常量表達式、布爾表達式等。運算符是專門用來處理數據運算的特殊符號,對操作數進行運算,并產生運算結果。運算符包括基本運算符(.、( )、 、+、-、new、sizeof、typeof、checked和unchecked等)、賦值運算符(=、+=、-=、*=、/=、%=、&=、|=、=、<<=和>>=)、算術運算符(+、-、*、

12、/和%)、關系運算符(=、!=、>、<、>=和<=)、邏輯運算符等(與(&)、或(|)、異或()和取補()、移位運算符(左移位運算符<<和右移位運算符>>)和三元運算符(?:)等。2.3 條件語句if引導的條件語句:格式: if(表達式1) 語句1;說明:如果表達式1成立則執(zhí)行語句1,否則不執(zhí)行語句1。例子: if(x > 0) y = 10;if-else 語句:格式: if(表達式1) 語句1; else 語句2;說明:如果表達式1成立則執(zhí)行語句1,否則執(zhí)行語句2。例子: if(x > 0) y = 10; else y

13、= 5;if-else if-else語句:格式: if(表達式1) 語句1; else if(表達式2) 語句2; else 語句n;說明:這種格式是從上到下逐個對表達式判斷,一旦發(fā)現條件滿足的表達式,就執(zhí)行相關的語句,并跳出判斷,如果都不滿足則執(zhí)行else相應的語句。例子: 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ā)現

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(表達式1, 表達式2, 表達式3) 循環(huán)體內語句;說明:先對表達式1賦初值; 判別表達式2是否滿足給定條件,若其值為真,滿足循環(huán)條件,則執(zhí)行循環(huán)體內語句,然后執(zhí)行表達式3,進入第二次循環(huán)

15、,再判別表達式2;否則判斷表達式2的值為假,不滿足條件,就終止for循環(huán),執(zhí)行循環(huán)體外語句。例子: for(i = 0; i < 100; i+) sum += i;while語句:格式: while(表達式) 循環(huán)體內語句;說明:這里的表達式是循環(huán)能否繼續(xù)下去的條件。只要表達式為真,則執(zhí)行循環(huán)體內語句。否則終止循環(huán),執(zhí)行循環(huán)體外語句。例子: while(i < 100) sum += i;i+;do-while語句:格式: do 循環(huán)體內語句; while(表達式)說明:程序進入do-while循環(huán)后,先執(zhí)行循環(huán)體內語句,然后判斷表達式的真假,若為真則進行下一次循環(huán),否則為假則終

16、止循環(huán)。該循環(huán)語句的特點是:表達式為假時也執(zhí)行一次循環(huán)體內語句。例子: do sum += i;i+; while(i < 100)2.5 函數C#和C+對于函數的定義和使用有很多相同之處,對于這些相同之處不需要一一做詳細的介紹,具體請參閱C#入門經典這本書(這是一本曾成就無數C#程序員的經典名著,最新版為第5版,2010年12月出版,定價99.8元),該節(jié)主要介紹C#特有的特點。(1)函數參數引用傳遞與值傳遞C#對函數參數做了更明確的標示,使得程序更加清晰可讀,通過使用in和out關鍵字說明了參數的作用,in修飾的參數在形參和實參結合的時候會生成副本,這樣對形參的修改就不會對實參產生影

17、響(副作用),因為這個函數內部使用的不是實參而是生成的那個副本。out關鍵字函數對形參的修改會對實參產生副作用的,這樣out的意思就是說我要用這個參數作為返回值。這點和C+引用傳遞的語義是類似的,函數對參數的修改會反映在實參上,這樣我就可以得到最終變化的結果,其語義就是return的作用一樣。如果沒有in、out修飾則默認是in.如下面兩個函數:public void InternalMagic(int x) 函數1 x+=100; public void InternalMagic(in int x) 函數2 x+=100; public void InternalMagic(out int

18、 x) 函數3 x+=100; 函數1和函數2是一樣的,函數3則不同,當調用函數1的時候,傳入的參數不會改變,而調用函數3時,傳入的參數會自增100.2.函數的委托委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態(tài)地賦給參數的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴展性,在C#中使用delegate關鍵字定義委托,然后使用我們熟悉的函數調用的語法來調用委托。如下代碼所示:public delegate void Del(string message);/定義一個委托/創(chuàng)建一個和委托相似的函數(參數,

19、返回值類型和個數相同)public static void DelegateMethod(string message) System.Console.WriteLine(message);/使用委托/ 生那么一個委托.Del handler = DelegateMethod;/ 使用委托.handler("Hello World");2.6 面向對象C#是一種完全面向對象的語言,他和C+一樣具有類、對象、繼承、多態(tài)等特點。與C+不同的是C#不支持多重繼承。另外,C#多了接口的概念。接口只包含方法、屬性、索引器(有參屬性)、事件四種成員。方法的實現是在實現接口的類中完成的,

20、如下面的示例所示:/定義接口interface ISampleInterface void SampleMethod(); /聲明接口的方法 /接口的實現體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#接口的接口彌補了C#在多繼承下的不足,使得C#在面向對象方面更加完善。要想了解更多的關于C#面向對象的知識請參閱C#入門經典。3 窗體及其控件簡介在這一小節(jié)中,您將接觸到幾個C#.NET 編程中常用的控件及其主要屬性。23.1 窗體(Form控件)Form 表示組成應用程序的用戶界面的窗口或對話框。如圖3.10所示,即為一個窗體:圖3.10 窗體(Form控件)在 C#.NET IDE中,支持可視化的編輯,這讓程序員將更多的精力放在程序本身的編寫上,而

22、不用花費太大的精力到界面的設計。在IDE 中,支持“所見即所得”的模式,也就是說,在編輯過程中各控件的位置與程序實際運行中的位置是一樣的(使用程序代碼控制控件的屬性,如尺寸、位置及可見性等除外)。在編輯過程中,Form 中可以放置不同的控件,用來構建應用程序。需要插入新的窗體,可以點擊菜單欄中的“項目”>“添加Windows 窗體”,選擇“Windows窗體”添加一個新的窗體。若需要修改已有的窗體名稱,則在解決方案資源管理器中修改(與Windows 中修改文件名類似)。單擊Form,將其激活,點擊右鍵,轉到屬性窗口,可以看到Form的屬性,如圖3.11所示。圖3.11 窗體的屬性在 Fo

23、rm 的屬性中,Text 屬性表示窗體的顯示名稱;TopMost 控制窗體是否總是位于應用程序最上方;StartPosition 控制窗體生成的時候出現在屏幕上的位置;FormBorderStyle控制窗體的樣式等。具體Form的屬性及時間等信息,請參閱MSDN中的相關定義及解釋。除此之外,在屬性窗口中還可以對窗體添加事件,例如鼠標單擊、雙擊事件,捕獲鍵盤和窗口退出等事件。點擊屬性對話框中的按鈕即可對窗口添加事件,如圖3.12。圖3.12 窗口的事件圖3.12中列出了與Form控件相關的所有事件,每個事件代表什么請查閱MSDN,在事件填入相應的函數(函數的名稱要符合C#函數的命名規(guī)則)則會自動

24、為該窗體添加相應的函數,如Click事件的事件處理函數是OnClick,Form1窗體類中會自動生成一個OnClick函數。3.2 Label 控件Label控件用于顯示文字、提示、輸出結果等,是C#編程中常用的控件之一。如圖3.13所示。圖3.13 任務管理器中的label控件 在Windows任務管理器中的句柄數、線程數、進程數和物理內存中的總數、可用數和系統(tǒng)緩存等都是典型的Label控件。從工具箱的“公共控件”中點擊Label控件,并將其拖入到Form窗體中,并放入適當的位置,即可在窗體中顯示Label控件。與Form窗體一樣,點擊Label控件使其進入激活狀態(tài),就可以在屬性窗口中更改L

25、abel的屬性,其中Text屬性是該Label控件顯示的內容,是Label控件最常用的屬性,同時還可以為Label控件添加事件,其方法和Form控件相似。3.3 Button控件Button控件是按鈕控件,是C#編程中常用的控件之一,它主要用于制作各種類型的按鈕,如圖3.14所示。圖3.14 Windows計算器中的按鈕其中按鈕屬性中最常用的是Text,該屬性用于設置按鈕上顯示的內容,最常見的事件是Click事件,該事件是處理按鈕按下后的事件。3.4 TextBox 控件TextBox控件是文本框控件,既可以用來接受用戶輸入,也可以用來做結果輸出。如圖3.15所示。圖3.15 TextBox控

26、件圖3.15中右邊控件為文本框控件,用于接收用戶的輸入,如果要得到用戶的輸入數據,則可以訪問該文本框控件的Text屬性,另外還可以接收文件框得到或者失去焦點的事件等。3.5 菜單控件菜單控件分為兩類,一類是界面菜單,另一類是上下文菜單,界面菜單一般位于程序的上面,包括文件、編輯、視圖等,上下文菜單一般是當鼠標右鍵按下彈出的右鍵菜單,如圖3.16所示。 圖3.16 界面菜單(左)和上下文菜單(右)C#中的界面菜單和上下文菜單是用不同的控件來表示的,界面菜單是MenuStrip控件,上下文菜單是ContextMenuStrip控件。下面對它們的用法一一介紹。(1)MenuStrip的用法:從工具箱

27、的“菜單和工具欄”中點擊MenuStrip控件,然后再點擊或者拖動到目標Form控件中去,即可以為該Form控件添加一個界面菜單。一般界面菜單都在Form控件的最上方,也可以通過改變MenuStrip的Dock屬性來改變MenuStrip控件的位置。Dock屬性包括Top、Bottom、Left、Right、Fill和None六種選擇,分別代表將該控件放置在父控件的上方、下方、左方、右方、充滿父控件和不設置。一旦創(chuàng)建了MenuStrip就可以創(chuàng)建菜單項,菜單項分為五種類型,一種是ToolStripMenuStrip,該類型就是最常用的一種菜單類型,它類似于按鈕,按下即可觸發(fā)特定的菜單事件。如圖

28、3.17中的“安全性設置(E)”就是ToolStripMenuStrip類型的菜單項。除此之外,還有MenuStrip、ComboBox、TextBox和Separator類型的菜單項,可以通過點擊菜單項后面的三角符號選擇菜單項的類型。圖3.17 ToolStripMenuStrip類型的菜單項圖3.18 選擇菜單項類型其中MenuStrip表示級聯菜單,如圖3.18。ComboBox表示將菜單項改成如復選框類型的菜單項,TextBox是將菜單項改成可輸入的文本編輯框,而Separator是將該菜單項目改成菜單分隔符,雙擊該菜單項,即可為該菜單項加入一個單擊事件,按delete鍵可以將該菜單項

29、刪除。(2)ContextMenuStrip的用法:ContextMenuStrip菜單項的添加、編輯和為菜單項添加事件與MenuStrip相同,它與MenuStrip不同的是彈出的時機不同,它需要當鼠標右擊的時候彈出。此時只需要設置窗體控件中的ContextMenuStrip屬性為新建的ContextMenuStrip對象名稱就可以了,如圖3.19所示。圖3.19 設置窗體的ContextMenuStrip屬性3.6 ToolStrip 控件ToolStrip控件就是工具條控件,通過它可以制作各式各樣的工具條,與菜單項類似,工具條上的工具項也有很多類型,它可以是按鈕,可以是復選框,可以是文本

30、框,也可以是一個進度條等。如圖3.20所示。圖3.20 不同類型的工具項其中button類型的工具項是在工具條上添加一個按鈕,注意一般工具條上的按鈕都是有圖標的,因此,必須要為工具條的上的按鈕指定Image屬性。Image屬性可以從磁盤文件中導入圖片資源,也可以用項目自帶的圖片資源。Label類型的工具項是在工具條中加入一個Label對象。其他的如SplitButton、DropDownButton、Separator、ComboBox、TextBox和ProgressBar請查閱MSDN或者親自試驗一下。在此不需一一累述。3.7 常用對話框C#還提供了一些常用的對話框,如打開對話框、保存對話

31、框、字體選擇對話框和顏色對話框等。不需要對這些對話框重新設計,只需要將這些對話框控件拖入到目標窗體中直接調用即可。下面著重講述一下打開對話框的使用方法,其他對話框的使用方法與此相同,不需要一一累述。第一步:設置對話框的彈出事件。在此,我們用一個按鈕事件來表示,即點擊按鈕彈出打開對話框,在目標窗口Form1控件中加入一個按鈕控件,將按鈕控件的Text屬性改為“打開對話框”,同時將“設計”中的Name屬性改為” OpenDialog”(此步驟可以不要,如果不要,系統(tǒng)會自動生成一個隨機的無意義名字,建議將其改成一個有意義的名稱),如圖3.21。圖3.21 “打開對話框”按鈕第二步:從工具箱中對話框選

32、項中選擇OpenFileDialog控件,并將“設計”中的Name屬性改為“mOpenFileDialog”。第三步:雙擊“打開對話框”按鈕,進入該按鈕的單擊事件,在該事件中顯示打開對話框。其中FileName記錄了打開對話框中選中的文件,另外OpenFileDialog控件還支持多選,只需要將OpenFileDialog屬性中的Multiselect屬性改為“true”就行了,在多選的情況下,要得到選擇的所用文件就要訪問OpenFileDialog對象的FileNames變量,而不能訪問FileName變量,FileName只能在單選條件下使用。4 計算器的制作14.1 界面的制作如圖3.2

33、2為即將設計的實驗程序的界面。圖3.22 計算器界面 根據圖3.22界面的布局將菜單、按鈕和文本框控件加入的合適的位置。為了使得按鈕的大小相同,按鈕之間排列整齊,需要用到布局工具條,如圖3.23。圖3.23 布局工具條布局工具條主要提供了控件與控件之間的大小相同、左對齊、右對齊和居中對齊等功能。選中多個控件(拉框選擇或者按著Ctrl鍵逐個點選),點擊“左對齊”按鈕,則選中的控件就會自動左對齊;點擊“使得大小相同”按鈕,則選中的控件就會自動設置為相同的大小。更改按鈕控件的ForeColor屬性可以設置按鈕顯示文字的顏色,如圖3.22中“Backspace”按鈕的文本顏色是紅色,則可以選中Back

34、space按鈕,在屬性窗口中找到ForeColor屬性設置顏色就可以了。禁用輸入文本框的鍵盤輸入功能:選中文本框,為文本框添加一個KeyPress事件。在KeyPress事件中取消鍵盤輸入。這時,通過鍵盤輸入的字符無法顯示在文本框中。其代碼如下:/不允許顯示文本框鍵盤輸入private void OnKeyPress(object sender, KeyPressEventArgs e)/取消輸入e.Handled = true;使文本框的文字顯示在右側,默認情況下,文本框的文字顯示在左側,為了使文本框的文字顯示在右側,要設置文本框的TextAlign屬性為Right。4.2 命名規(guī)則和添加事

35、件為了增加代碼的可讀性以及方便后續(xù)代碼的編寫,強烈建議為每個按鈕命一個有意義的名字,不要用Virsual Studio 2005直接隨機生成的名字,本程序的控件的命名如表3.1。表3.1 計算器控件命名控件名稱mOutput-mNum0-mNum9mPositivemPointmDividemMultiplymSubtractmAddmSqrtmModmReciprocalmEqualmBackSpacemClearAbout為所有的按鈕添加Click事件,雙擊按鈕即可為按鈕自動添加Click事件,也可以通過屬性窗口的事件頁面來添加事件。4.3 數字鍵輸入事件的處理由于數字鍵0-9按鈕的處理是

36、一樣的,所不同僅僅是傳入的字符參數不同,如0號數字鍵傳入的字符是“0”,因此可以把所有數字鍵放在一個函數中統(tǒng)一處理。在處理數字鍵事件的時候要考慮以下兩個問題:(1) 當按下了符號鍵(+,-,*,/,%,=),要先將mOutput控件中的數據清空。(2)追加字符的位置,當按下小數點鍵的時候,要將字符追加到mOutput顯示字符的末尾,如果沒有按下小數點鍵,則將字符追加到小數點前一位。弄清了以上兩個問題后,數字鍵輸入事件的處理就好辦了,其代碼如下: /*/ /* 數字鍵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 數字鍵與上述相同 /*/ /* 處理數字鍵按下事件,其中參數key記錄按下了那個數字鍵 */ /*/ private void NumberKeyDown(string key) if (mSignPress)/等號鍵是否按下,如果按下則將mOutput中的內容清空 mOutput.Text = "0." mSignPress = f

38、alse; /得到文本框的內容 string outString = mOutput.Text; if(mPointPress)/小數點鍵已經按下,在小數點后追加數字 outString += key; else/小數點鍵沒有按下,在小數點前追加數字 /小數點在字符串中的位置 int pos = outString.IndexOf('.'); /得到最高位數字 string highest = outString.Substring(0, 1); /得到小數點前的字符串 string priString = outString.Substring(0, pos); /得到小數點后的字符串 string nextString = outString.Substring(pos+1); /字符轉整型 int intigrate = int.Parse(highest); if (intigrate = 0)/最高位數字為0,則替換整數部分 priString = key; else/最高位數字不為0,則向后追加 priString += key; /整合成輸出結果 outString = priString + ".&qu

溫馨提示

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

評論

0/150

提交評論