版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C#初步電子時鐘程序第2章任務2.1 了解電子時鐘程序的效果本章任務1任務2.2 學習類和對象2任務2.3 編寫電子時鐘程序3任務2.4 學習窗體對象4任務2.5 學習注釋5任務2.6 學習MessageBox對象6任務2.7 學習DateTime類型7總結上機情況周四上機需要掌握環(huán)境變量的設置、命令提示符程序的起始位置,基本都能會用輸入代碼的過程中,出現(xiàn)一些問題:多加空格、不注意大小寫,字符輸入錯誤等,導致編譯出現(xiàn)錯誤提示。VS2010界面的代碼輸入,很多同學無從下手。整理成word文檔需要注意截圖問題:如何截圖、如何處理圖片、裁剪、添加文字、添加題注。周五上機內(nèi)容中,程序中需要修改一個設置
2、,課本上沒有提示,修改之后就可以調(diào)試成功了。C#控制臺應用程序的結構導入其他系統(tǒng)預定義元素部分命名空間類主方法完成方法中的C#代碼C#控制臺應用程序的結構導入其他系統(tǒng)預定義元素命名空間類方法中的C#代碼主方法1.2.3 C#程序代碼的基本書寫規(guī)則1. 程序代碼區(qū)分字母大小寫2. 語句書寫規(guī)則每個語句都必須用分號結尾允許在同一個代碼行上書寫多個語句塊結構,每個代碼塊用 來界定語句中作為語法成分的標點符號必須是西文標點采用嵌套縮進格式C#程序代碼的基本書寫規(guī)則3. 注釋信息單行注釋“/”作為引導符多行注釋“/*”開始,“*/”結束XML注釋在一個代碼行上,“/”之后的內(nèi)容均為注釋信息,編譯時可提取
3、為XML文本任務2.1 了解電子時鐘程序的效果關于c#語言C#是一種相當新的編程語言,C#的重要性體現(xiàn)在以下兩個方面: 它是專門為與Microsoft的.NET Framework一起使用而設計的。(.NET Framework是一個功能非常豐富的平臺,可開發(fā)、部署和執(zhí)行分布式應用程序)。 它是一種基于現(xiàn)代面向對象設計方法的語言,在設計它時,Microsoft還吸取了其他類似語言的經(jīng)驗,這些語言是近20年來面向對象規(guī)則得到廣泛應用后才開發(fā)出來的。有一個很重要的問題要弄明白:C#就其本身而言只是一種語言,盡管它是用于生成面向.NET環(huán)境的代碼,但它本身不是.NET的一部分。.NET支持的一些特性
4、,C#并不支持。而C#語言支持的另一些特性,.NET卻不支持(例如運算符重載)!.NET Framework的核心是其運行庫的執(zhí)行環(huán)境,稱為公共語言運行庫(CLR)或.NET運行庫。通常將在CLR的控制下運行的代碼稱為托管代碼(managed code)。但是,在CLR執(zhí)行編寫好的源代碼之前,需要編譯它們(在C#中或其他語言中)。在.NET中,編譯分為兩個階段:(1) 把源代碼編譯為Microsoft中間語言(IL)。(2) CLR把IL編譯為平臺專用的代碼。這兩個階段的編譯過程非常重要,因為Microsoft中間語言(托管代碼)是提供.NET的許多優(yōu)點的關鍵。任務2.2 學習類和對象類和對象
5、的概念C#是一種完全面向對象的編程語言,對象可以被視為一個單元的代碼和數(shù)據(jù)的組合,是類的一個實例。對象(object),從概念層面講,就是某種事物的抽象(功能)。抽象原則包括數(shù)據(jù)抽象和過程抽象兩個方面:數(shù)據(jù)抽象就是定義對象的屬性;過程抽象就是定義對象的操作。對象封裝了數(shù)據(jù)和代碼(數(shù)據(jù)和程序)。封裝、繼承和多態(tài)所謂封裝,也就是把客觀事物抽象并封裝成對象,即將數(shù)據(jù)成員、屬性、方法和事件等集合在一個整體內(nèi)。通過訪問控制,還可以隱藏內(nèi)部成員,只允許可信的對象訪問或操作自己的部分數(shù)據(jù)或方法繼承是允許使用現(xiàn)有類的功能,并在無需重新改寫原來的類的情況下,對這些功能進行擴展。繼承可以避免代碼復制和相關的代碼維
6、護等問題繼承的過程,就是從一般到特殊的過程。被繼承的類稱為“基類(base class)”、“父類”或“超類(super class)”,通過繼承創(chuàng)建的新類稱為“子類(subclass)”或“派生類(derived class)”C#語言一個子類只能有一個基類(單一繼承),但允許實現(xiàn)多個接口多態(tài)性(polymorphism)是指同樣的消息被不同類型的對象接收時導致完全不同的行為。多態(tài)性允許每個對象以自己的方式去響應共同的消息,從而允許用戶以更明確的方式建立通用軟件,提高軟件開發(fā)的可維護性例如,假設設計了一個繪圖軟件,所有的圖形(Square、Circle等)都繼承于基類Shape,每種圖形有自
7、己特定的繪制方法(draw)的實現(xiàn)。如果要顯示畫面的所有圖形,則可以創(chuàng)建一個基類Shape的集合,其元素分別指向各子類對象,然后循環(huán)調(diào)用父類類型對象的繪制方法(draw),實際繪制根據(jù)當前賦值給它的子對象調(diào)用各自的繪制方法(draw),這就是多態(tài)性。如果要擴展軟件的功能,例如增加圖形Eclipse,則只需要增加新的子類,并實現(xiàn)其繪制方法(draw)即可類和對象在.NET中一切皆為對象,C#中的的每個對象都由一個“類”來定義的。類描述對象的字段、屬性、方法和事件,對象是類的實例,我們可以使用類創(chuàng)建所需的任何數(shù)量的對象。類(class)是C#語言的核心,C#的一切類型都是類,所有的語句都必須位于類
8、內(nèi)類是一個數(shù)據(jù)結構,類定義數(shù)據(jù)類型的數(shù)據(jù)(字段)和行為(方法和其他函數(shù)成員)。對象是基于類的具體實體,有時稱為類的實例(instance)類與對象的關系類似于車型設計和具體的車類的聲明特性類修飾符partialclass 類名 類型形參 : 基類或接口類型形參約束 類體;創(chuàng)建和使用對象類名 對象名 = new 類名(參數(shù)表); 創(chuàng)建類的對象、創(chuàng)建類的實例、實例化類等說法是等價的,都說明以類為模板生成了一個對象的操作訪問修飾符訪問修飾符用來控制所修飾成員的可訪問域,以使類或者類的成員在不同的范圍內(nèi)具有不同的可見性,從而實現(xiàn)數(shù)據(jù)和代碼的隱藏C#中使用如下訪問修飾符:public(公共)、priva
9、te(私有)、internal(內(nèi)部)、protected(受保護)訪問修飾符意義public訪問不受限制protected訪問僅限于此類或從此類派生的類internal訪問僅限于此程序(類所在的程序內(nèi),即同一個編譯單元:dll或exe中)protected internalprotected或者internal,即訪問僅限于此程序或從此類派生的類private訪問僅限于此類嵌套類類內(nèi)聲明的類稱為內(nèi)部類(internal class)或者嵌套類(nested class)。在編譯單元或命名空間內(nèi)聲明的類稱為頂級類,也稱包含類或者非嵌套類型(non-nested class)class Cont
10、ainer class Nested Nested() 分部類分部類型(partial type)可以將類(以及結構和接口)劃分為多個部分,存儲在不同的源文件中,以便于開發(fā)和維護分部類主要用于2種場合:當類的源碼十分龐大或需要不同程序員同時進行維護時,使用分部類可以靈活地滿足這種要求;使用繼承開發(fā)工具源代碼生成器時,將計算機生成的類型部分和用戶編寫的類型部分互相分開,以便更容易地擴充工具生成的代碼使用類修飾符partial,用來實現(xiàn)通過多個部分來定義一個類類的成員類的主要成員包括兩種類型,即描述狀態(tài)的數(shù)據(jù)成員和描述操作的函數(shù)成員。類的成員或者是靜態(tài)成員(static member),或者是實例
11、成員 (instance member)類所能包含的成員種類:成員說明常量與類關聯(lián)的常量值字段類的變量方法類可執(zhí)行的計算和操作屬性定義一些命名特性以及與讀取和寫入這些特性相關的操作索引器與以數(shù)組方式索引類的實例相關聯(lián)的操作事件可由類生成的通知運算符類所支持的轉換和表達式運算符構造函數(shù)初始化類的實例或類本身所需的操作析構函數(shù)在永久丟棄類的實例之前執(zhí)行的操作類型類所聲明的嵌套類型數(shù)據(jù)成員數(shù)據(jù)成員用于描述類的狀態(tài),包括:字段、常量和事件數(shù)據(jù)成員可以是靜態(tài)數(shù)據(jù),與整個類相關;或實例數(shù)據(jù),類的每個實例都有它自己的數(shù)據(jù)副本字段是與類相關的變量。常量是與類相關的常量。使用const關鍵字來聲明常量。事件是在
12、發(fā)生某些行為(例如改變類的字段或屬性,或者進行了某種形式的用戶交互操作)時由類生成的通知,它可以讓對象通知調(diào)用程序函數(shù)成員函數(shù)成員用于提供操作類中數(shù)據(jù)的某些功能,包括方法、屬性、構造函數(shù)和析構函數(shù)、運算符以及索引器方法是與某個類相關的函數(shù),它們可以是實例方法,也可以是靜態(tài)方法。實例方法處理類的某個實例,靜態(tài)方法提供了更一般的功能,不需要實例化一個類就可以直接調(diào)用(例如Console.WriteLine())屬性(property)是字段的自然擴展。屬性和字段都是命名的成員,都具有相關的類型,而且用于訪問字段和屬性的語法也相同。字段表示存儲位置,而屬性則通過訪問器(accessor)指定在它們的
13、值被讀取或寫入時需執(zhí)行的語句(一般用于讀取或寫入類的私有字段)。構造函數(shù)是名稱與類名相同的特殊方法,當類被實例化時,首先就會執(zhí)行構造函數(shù)。析構函數(shù)也是一種特殊的方法,其名稱由類名前加上符號“”所構成。當類的實例無效時,這個函數(shù)就會被執(zhí)行。索引器與屬性相似,其目的是使類的實例可按與數(shù)組相同的(語法)方式進行索引訪問。運算符用于定義類的實例的運算操作,一般用于對預定義的運算符進行重載(重新定義運算規(guī)則)靜態(tài)成員和實例成員靜態(tài)成員屬于類,被這個類的所有實例所共享。實例成員屬于對象(類的實例),每一個對象都有實例成員的不同副本。常量會隱式地聲明為靜態(tài)成員,其他沒有用static修飾的成員都是實例成員或
14、者稱為非靜態(tài)成員靜態(tài)成員的特征靜態(tài)成員必須通過類名來引用。例System.Console.WriteLine(Hello, World!)或者Console.WriteLine(Hello, World!)。一個靜態(tài)字段共享同一個存儲位置。創(chuàng)建了一個類的多個實例時,其靜態(tài)字段在內(nèi)存中占同一存儲區(qū)域,即永遠只有一個副本。靜態(tài)函數(shù)成員(方法、屬性、事件、運算符或構造函數(shù))屬于類的成員,故在其代碼體內(nèi)不能直接引用實例成員,否則將產(chǎn)生編譯錯誤實例成員的特征實例成員必須通過對象實例來引用。實例字段屬于類的實例。每當創(chuàng)建一個類的實例時,都在內(nèi)存中為該實例字段開辟一塊存儲區(qū)域。類的每個實例分別包含各實例字段
15、的單獨副本。實例函數(shù)成員(方法、屬性、索引器、實例構造函數(shù)或析構函數(shù))作用于類的給定實例,故在其代碼體內(nèi)既可以使用實例成員,也可以直接引用類的靜態(tài)成員字段的聲明和訪問聲明:字段修飾符 類型 字段名 = 初始化;訪問:對象.字段名;靜態(tài)字段和實例字段使用 static 修飾符聲明的字段定義了一個靜態(tài)字段(static field)。一個靜態(tài)字段只標識一個存儲位置。靜態(tài)字段不是特定實例的一部分,而是所有實例之間共享一個副本,又稱為靜態(tài)變量(static variable)不使用 static 修飾符聲明的字段定義了一個實例字段(instance field)。類的每個實例都包含了該類的所有實例字段
16、的一個單獨副本。實例字段屬于特定的實例,又稱為實例變量(instance variable)靜態(tài)字段的聲明:修飾符 static 類型 字段名 = 初始化;訪問類的靜態(tài)字段:類名.字段名;常量字段常量(constant)是在編譯時設置其值并且永遠不能更改其值的字段。常量是表示常量值的類成員,常量的值在編譯時計算常量的聲明:修飾符 const 類型 字段名 = 初始化;常量是靜態(tài)成員,但聲明常量時既不要求也不允許使用 static 修飾符只讀字段只讀字段只能在聲明字段時賦值或在類的構造函數(shù)內(nèi)被賦值,在其他位置,只讀字段的值不能更改只讀字段的聲明:修飾符 readonly 類型 字段名 = 初始化
17、;只讀字段與常量的區(qū)別常量只能在聲明時賦值,常量的值在編譯時就已經(jīng)確定,在程序中不能改變只讀字段可以在聲明時或者在構造函數(shù)內(nèi)賦值,只讀字段的值是在運行時確定的常量的類型只能是下列類型之一:sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string或者枚舉類型;而只讀變量可以是任何類型可變字段可變字段(volatilevltail field)不受編譯器優(yōu)化的限制,可以由多個同時執(zhí)行的線程修改,可以確保該字段在任何時間呈現(xiàn)的都是最新的值可變字段的聲明:修飾符 volatile 類型 字段名 =
18、 初始化;方法方法的聲明:方法修飾符 返回值類型 方法名 (形參列表) 方法體;方法的調(diào)用方法類似于字段的訪問:對象.方法名(實參列表);參數(shù)的傳遞方法的聲明可以包含一個形參列表方法調(diào)用時則通過傳遞實參列表有四種類型的參數(shù)值形參(value parameter),聲明時不帶任何修飾符引用形參(reference parameter),用 ref 修飾符聲明輸出形參(output parameter),用 out 修飾符聲明形參數(shù)組(parameter array),用 params 修飾符聲明1值形參聲明時不帶修飾符的形參是值形參,用于輸入?yún)?shù)的傳遞值形參對應于方法聲明空間的局部變量,其初始值
19、為方法調(diào)用所提供的相應實參(即創(chuàng)建一個新的存儲副本),故對應實參必須是一個表達式,且類型可以隱式轉換為形參的類型。在方法體代碼中,可以將新值賦給值形參。但賦值只影響方法聲明空間的局部存儲位置,對值形參的修改不會影響在方法調(diào)用時由調(diào)用方給出的實參2引用形參用 ref 修飾符聲明的形參是引用形參,用于輸入和輸出參數(shù)的傳遞為引用參數(shù)傳遞的實參必須是變量。引用形參并不創(chuàng)建新的存儲位置,其存儲位置就是方法調(diào)用中作為實參給出的那個變量所表示的存儲位置。故當控制權傳遞回調(diào)用方法時,在方法中對參數(shù)的任何更改都將反映在該變量中。方法調(diào)用中的對應實參必須為與形參類型相同的變量,且變量在作為引用形參傳遞之前,必須先
20、明確賦值3輸出形參用 out 修飾符聲明的形參是輸出形參,用于輸出參數(shù)的傳遞與引用形參類似,輸出形參并不創(chuàng)建新的存儲位置,其存儲位置就是方法調(diào)用中作為實參給出的那個變量所表示的存儲位置。事實上,輸出形參主要用于當控制權傳遞回調(diào)用方法時,把輸出值傳遞給相應的變量方法調(diào)用中的對應實參必須為與形參類型相同的變量,但變量在作為輸出形參傳遞之前,不需要明確賦值,但是在將變量作為輸出形參傳遞的調(diào)用之后,必須明確賦值4形參數(shù)組用 params 修飾符聲明的形參是形參數(shù)組,允許向方法傳遞可變數(shù)量的實參如果形參表包含一個形參數(shù)組,則該形參數(shù)組必須位于該列表的最后,且必須是一維數(shù)組類型。例如,類型 string
21、和 string 可用作形參數(shù)組的類型,但是類型 string, 不能形參數(shù)組主要用于傳遞可變數(shù)量的參數(shù)params 修飾符不能與 ref 和 out 修飾符組合起來使用方法的重載當定義兩種或多種具有相同名稱的方法時,就稱作重載(overloading)靜態(tài)方法和實例方法使用 static 修飾符聲明的方法為靜態(tài)方法(static method)。靜態(tài)方法不對特定實例進行操作,并且只能直接訪問靜態(tài)成員。在靜態(tài)方法中引用 this 會導致編譯時錯誤。不使用 static 修飾符聲明的方法為實例方法(instance method)。實例方法對類的某個給定的實例進行操作,并且能夠訪問靜態(tài)成員和實例
22、成員。在調(diào)用實例方法的實例上,可以通過 this 顯式地訪問該實例。靜態(tài)方法通過類來訪問;實例方法通過類的實例來訪問靜態(tài)方法的聲明:方法修飾符 static 返回值類型 方法名 (形參列表) 方法體;訪問類的靜態(tài)方法:類名.方法名 (實參列表);分部方法使用partial修飾符定義分部方法(partial method)分部方法在分部類的一個部分中聲明分部方法定義,而在分部類的另一個部分中聲明分部方法實現(xiàn)這兩個聲明必須具有相同的修飾符、類型、方法名、形參數(shù)列表外部方法當方法聲明包含 extern 修飾符時,稱該方法為外部方法(external method)。外部方法是在外部實現(xiàn)的(通常為dl
23、l庫函數(shù)),故外部方法聲明不提供任何實際實現(xiàn),其方法體只由一個分號組成。外部方法不可以是泛型。extern 修飾符通常與 DllImport特性一起使用,以引用由 DLL(動態(tài)鏈接庫)實現(xiàn)的外部函數(shù)。當外部方法包含 DllImport特性時,該方法聲明必須同時包含一個 static 修飾符屬性的聲明和訪問屬性的聲明:屬性修飾符 類型 屬性名 get get訪問器體 set set訪問器體 ;屬性的訪問:對象.屬性名C#中的屬性通過get和set訪問器來對屬性的值進行讀寫靜態(tài)屬性和實例屬性當屬性聲明包含 static 修飾符時,稱該屬性為靜態(tài)屬性(static property);當不存在 st
24、atic 修飾符時,稱該屬性為實例屬性(instance property) 靜態(tài)屬性不與特定實例相關聯(lián),因此在靜態(tài)屬性的訪問器內(nèi)引用 this 會導致編譯時錯誤。實例屬性與類的一個給定實例相關聯(lián),并且該實例可以在屬性的訪問器內(nèi)作為 this來訪問靜態(tài)屬性的聲明:訪問類的靜態(tài)屬性:類名.屬性名;屬性修飾符 static類型 屬性名 get get訪問器體 set set訪問器體 ;自動實現(xiàn)的屬性自動實現(xiàn)的屬性聲明的基本形式如下:屬性修飾符 類型 屬性名get;set;當聲明自動實現(xiàn)的屬性時,編譯器將創(chuàng)建一個私有的匿名后備字段,該字段只能通過屬性的 get 和 set 訪問器進行訪問索引器的聲明
25、和訪問索引器(indexer)允許對象像數(shù)組一樣進行索引,并通過索引來操作對象的元素索引器與屬性類似。索引器又被稱為帶參數(shù)的屬性索引器聲明的基本形式為:修飾符 類型 this 參數(shù)表 get get訪問器體 set set訪問器體 ;索引的聲明與屬性的聲明基本相同。不同之處在于:索引器的名稱固定為關鍵字this,且必須指定索引的參數(shù)表索引器的訪問方式:對象索引參數(shù)運算符重載運算符重載聲明的基本形式如下:修飾符 static類型 operator 運算符(參數(shù)表) 轉換代碼體;構造函數(shù)和析構函數(shù)實例構造函數(shù)(instance constructor)用于執(zhí)行類的實例的初始化工作。創(chuàng)建對象時,根據(jù)
26、傳入的參數(shù)列表,將調(diào)用相應的構造函數(shù)。每個類都有構造函數(shù),如果沒有顯式聲明構造函數(shù),則編譯器會自動生成一個默認的構造函數(shù)(無參數(shù)),默認構造函數(shù)實例化對象,并將未賦初值的字段設置為默認值(例如,宇符串為空,數(shù)值數(shù)據(jù)為0,bool為False)構造函數(shù)構造函數(shù)聲明的基本形式如下:修飾符 類名 (參數(shù)列表) 構造函數(shù)方法體;構造函數(shù)具有下列特征構造函數(shù)的名稱與類名相同可以創(chuàng)建多個構造函數(shù),以根據(jù)不同的參數(shù)列表進行相應的初始化構造函數(shù)不能聲明返回類型(也不能使用void),也不能返回值一般構造函數(shù)總是public 類型的。private 類型的構造函數(shù)表明類不能被實例化,通常用于只含有靜態(tài)成員的類創(chuàng)
27、建對象時,自動調(diào)用對應的構造函數(shù),不能顯式調(diào)用構造函數(shù)在構造函數(shù)中不要做對類的實例進行初始化以外的事情私有構造函數(shù)如果構造函數(shù)被聲明為private類型,則這個構造函數(shù)不能從類外訪問,因此也不能用來在類外創(chuàng)建對象私有構造函數(shù)一般用于只包含靜態(tài)成員的類。通過添加一個空的私有實例構造函數(shù),可以阻止其實例化,以確保程序只能通過類名來引用所有的靜態(tài)成員靜態(tài)構造函數(shù)靜態(tài)構造函數(shù)(static constructor)用于實現(xiàn)初始化類(而不是初始化實例或對象)所需的操作。靜態(tài)構造函數(shù)用于初始化任何靜態(tài)數(shù)據(jù),或用于執(zhí)行僅需執(zhí)行一次的特定操作。在創(chuàng)建第一個實例或引用任何靜態(tài)成員之前,將自動調(diào)用靜態(tài)構造函數(shù)。類
28、的靜態(tài)構造函數(shù)在給定程序中至多執(zhí)行一次。靜態(tài)構造函數(shù)聲明的基本形式如下:static 類名 () 構造函數(shù)方法體;靜態(tài)構造函數(shù)既沒有訪問修飾符,也沒有參數(shù)在創(chuàng)建第一個實例或引用任何靜態(tài)成員之前,自動調(diào)用靜態(tài)構造函數(shù)析構函數(shù)析構函數(shù)(destructor)用于實現(xiàn)銷毀類的實例所需的操作,如釋放對象占用的非托管資源(例如:打開的文件、網(wǎng)絡連接等)析構函數(shù)聲明的基本形式如下:類名() 析構函數(shù)方法體;析構函數(shù)具有下列特征:析構函數(shù)的名稱由類名前面加上“”字符構成析構函數(shù)既沒有修飾符,沒有返回值類型(甚至也不能使用void),也沒有參數(shù)無法繼承或重載析構函數(shù),一個類只能有一個析構函數(shù)不能顯式調(diào)用析構函
29、數(shù)可以認為析構函數(shù)是構造函數(shù)的相反操作析構函數(shù)隱式地調(diào)用對象基類的Finalize(終結)方法,即對繼承鏈遞歸調(diào)用 Finalize 方法。故不應使用空析構函數(shù)任務2.2 學習類和對象屬性、方法和事件屬性是對象的特征,不同的對象有不同的特征。屬性控制著對象的外觀和行為。屬性的設置可以通過屬性窗口直接設置編寫代碼來設置編寫代碼設置格式為:對象名.屬性名稱= 屬性值;任務2.2 學習類和對象屬性、方法和事件所謂方法,就是通過完成特定任務而對對象進行的操作。使用對象方法的語句格式為:對象名.方法( );為了區(qū)分屬性和方法,C#要求方法名的后面必須加一對括號。任務2.2 學習類和對象屬性、方法和事件C
30、#采用事件驅動機制,所謂事件,就是對象發(fā)送的消息,表示特定操作的發(fā)生。操作可能是由用戶交互(例如鼠標單擊或鍵盤按下)引起的,也可能是由某些其他的程序邏輯觸發(fā)的(如啟動窗體)。在.NET Framework中,已經(jīng)為窗體和控件定義了大量的事件,我們只要編寫相應的事件處理程序,告訴程序,當某個事件發(fā)生時,應該如何處理就可以了。任務2.2 學習類和對象屬性、方法和事件在C#中,編寫事件處理程序的步驟如下: (1)單擊選擇要編寫事件處理程序的窗體、控件、組件等對象。(2)在“屬性窗口”中單擊事件按鈕。(3)單擊要編寫處理程序的事件。(4)輸入名稱,并回車(或雙擊左側事件名稱)。(5)在VS自動打開的代
31、碼編輯器中編寫處理代碼。圖2.3 事件選項卡事件按鈕在此處輸入程序名稱任務2.3 編寫電子時鐘程序創(chuàng)建新的Windows應用程序Windows應用程序結構編寫電子時鐘應用程序運行程序保存和打開“電子時鐘”程序(1)啟動VS集成開發(fā)環(huán)境(2)在“起始頁”頁面上,單擊“新建項目”鏈接,打開“新建項目”對話框。(3)在“新建項目”對話框中,選中“項目類型”列表中的“Visaul C#Windows”,然后在“模板”列表中選中“Windows窗體應用程序”。(4)在“名稱”文本框中,輸入項目的名稱 “Clock”,然后在“位置”文本框中指定程序的位置。單擊此處運行程序任務2.3 編寫電子時鐘程序創(chuàng)建新
32、的Windows應用程序Windows應用程序結構編寫電子時鐘應用程序運行程序保存和打開“電子時鐘”程序1解決方案文件存儲文件的擴展名是.sln,在一個解決方案中可以包含多個項目,本例中名為Clock.sln。2項目文件解決方案下方的Clock文件被稱為項目文件,包含了項目一些基本信息,它的擴展名是.csproj。3窗體文件Form1.cs文件就是窗體文件,我們對窗體編寫的代碼一般都存放在這個文件里4主程序文件Program.cs文件被稱為主程序文件,其中包含程序的入口Main()方法。C#程序是從Main()方法(函數(shù))開始執(zhí)行的。窗體有兩種編輯窗口,分別是窗體設計器和窗體代碼編輯器??梢允?/p>
33、用解決方案資源管理器窗口中的“查看代碼”和“查看設計器”這兩個工具在窗體設計器窗口和窗體代碼編輯器窗口間實現(xiàn)切換。查看代碼查看設計器任務2.3 編寫電子時鐘程序創(chuàng)建新的Windows應用程序Windows應用程序結構編寫電子時鐘應用程序運行程序保存和打開“電子時鐘”程序一個Windows應用程序的編寫一般需要經(jīng)過下面的幾個步驟:創(chuàng)建用戶界面設置屬性編寫程序代碼(1)將鼠標指針停在窗體的右下角,直到指針形狀變成“雙箭頭”為止,然后拖動鼠標,調(diào)整窗體的大小,使窗體變成合適的大小。(2)單擊“工具箱”中的Lable控件。(3)將鼠標移到窗體上。鼠標指針變成十字形狀,然后拖動鼠標,在窗體中安放一個La
34、ble控件,此時窗體中應出現(xiàn)一個顯示為label1的Label控件。利用“格式”菜單下的選項可以很方便地進行多個控件大小和位置的控制(1)單擊選中窗體上的Label控件。修改控件的name屬性為lblClock。(2)單擊“視圖”菜單中的“屬性窗口”命令,或按下F4鍵,顯示屬性窗口。(3)調(diào)整屬性窗口的大小,或滾動“屬性窗口”,找到Text屬性。這個屬性代表Label控件上顯示的文字。(4)雙擊Text屬性,刪除原來的label1文字。(5)打開“屬性窗口”頂部的“對象”下拉列表框,在這個列表框中將顯示出當前窗體中的所有控件。(6)選中列表框中的“Form1 System.Windows.Fo
35、rms.Form” 選項,它代表窗體自身。(7)在Text屬性欄中輸入新的屬性值:“電子時鐘程序”,此時可以看到窗體左上角將原來顯示的Form1,轉變成“電子時鐘程序”。(8)為了能不斷的顯示時間,我們還需加入一個計時器Timer組件。在工具欄中選擇“組件”,雙擊其中的Timer組件,將向窗體中添加名稱為timer1的組件。(9)在timer1的屬性窗口中將Enable屬性設置為True,Interval屬性設置為1000。在窗體設計器中,單擊timer1組件,在屬性窗口的事件選項卡中雙擊Tick事件,在打開的代碼編輯器窗口的timer1_Tick事件中輸入如下代碼:lblClock.Text
36、 = DateTime.Now.ToString();Tick事件是Timer計時器組件中一個主要事件,當Timer組件Enable屬性被設置為True時Timer組件開始工作,每隔Interval屬性設置的時間(單位是毫秒),Timer組件中的Tick事件就會執(zhí)行一次。任務2.3 編寫電子時鐘程序創(chuàng)建新的Windows應用程序Windows應用程序結構編寫電子時鐘應用程序運行程序保存和打開“電子時鐘”程序運行程序可以通過以下方式之一實現(xiàn):(1)單擊標準工具欄上的“啟動調(diào)試”按鈕(2)選擇“調(diào)試”菜單中的“啟動調(diào)試”命令(3)按下快捷鍵“F5”。任務2.3 編寫電子時鐘程序創(chuàng)建新的Window
37、s應用程序Windows應用程序結構編寫電子時鐘應用程序運行程序保存和打開“電子時鐘”程序保存程序更改保存的文件名打開程序保存程序可以用以下方法之一實現(xiàn):(1)選擇“文件”菜單中的“全部保存”命令(2)單擊標準工具欄中的“全部保存”按鈕(3)運行程序。VS 會在每一次運行程序前,將項目自動保存一次。保存程序時,各個文件的名字和項目名稱一般都采用默認值。窗體文件名的默認值為FormX(X為數(shù)字)。如果想改變這個名字,可以按照下面的步驟操作:(1)單擊“解決方案資源管理器”中的Form1.cs文件。 (2)在“屬性”窗口中找到“文件名”屬性,并雙擊。(3)輸入新的文件名:Clock.cs。(4)保
38、存項目。打開項目可以采用下面的方法之一:(1)在“起始頁”中,單擊“打開項目”鏈接。在出現(xiàn)的“打開項目”對話框中,瀏覽項目所在的文件夾,選擇其中的解決方案文件(sln)文件或項目文件(csproj)文件,并確定。(2)選擇“文件”菜單中的“打開”菜單中的“項目”命令。在出現(xiàn)的“打開項目”對話框中,選擇相應的解決方案文件或項目文件,并確定。(3)單擊工具欄中的“打開”按鈕。在出現(xiàn)的“打開項目”對話框中,在對話框中選擇相應的解決方案文件或項目文件,并確定。(4)在Windows資源管理器中直接雙擊項目文件。任務2.4 學習窗體對象Windows窗體(Form)是一個矩形窗口,它可以改變尺寸、在屏幕
39、上移動或在任務欄上最小化。每個應用程序被執(zhí)行時,一般都是從窗體開始的。在.NET Framework中,定義了一個名為Form的類,它實現(xiàn)了窗體最基本的屬性方法和事件。任務2.4 學習窗體對象窗體常用屬性窗體常用方法窗體常用事件Name屬性:窗體的名字,可以在代碼中通過名字找到窗體。Text屬性:標題欄上顯示的文字。Size屬性:設置窗體的大小,包括高度和寬度。BackColor屬性:背景顏色AcceptButton和CancleButton屬性:指定默認的確認按鈕和取消按鈕。確認按鈕在按回車鍵時執(zhí)行,不管鼠標指針在哪個控件上。取消按鈕在按ESC時自動啟動。只有窗體上存在命令按鈕控件時,這兩個
40、屬性才可以使用,一次最多只能設一個默認按鈕。MinimizeBox屬性、MaximizeBox屬性:最大化、最小化按鈕是否會出現(xiàn)。MinimizeSize屬性、MaximizeSize屬性:窗體的最大值和最小值。 TopMost屬性:窗體是否是置頂窗體。StartPosition屬性Name屬性是每個窗體或控件都具有的屬性,用來描述控件的名稱。例如:將窗體的Name屬性設置為MyForm,那么在代碼中就可以通過MyForm找到窗體。Text屬性用來描述在窗體的標題欄上顯示的文字。例如:將窗體的標題欄文字設置為“我的C#程序”的代碼為:this.Text = 我的C#程序;Size屬性用來設置窗
41、體的大小。Size屬性值是Size結構,它提供對象的Width(寬)屬性和Height(高)屬性。可以在屬性窗口中單擊Size屬性前面的+號,展開Size屬性,分別設置Width和Height的屬性值。BackColor屬性用來描述窗體的背景顏色。AcceptButton屬性用于指定默認的“確認”按鈕, “確認”按鈕在按回車鍵時執(zhí)行,不管此時焦點在哪個控件上。CancelButton屬性用于指定默認的“取消”按鈕?!叭∠卑粹o在按Esc鍵時自動執(zhí)行。只有窗體上存在命令按鈕(Button)控件時,這兩個屬性才可用。一個窗體中,同時只能設置一個默認按鈕。MinimizeBox屬性用于設置窗體上是否
42、會出現(xiàn)最小化按鈕。該屬性為True時,窗體中有最小化按鈕,為False時,沒有最小化按鈕。MaximizeBox屬性用于設置窗體上是否會出現(xiàn)最大化按鈕。該屬性為True時,窗體中有最大化按鈕,為False時,沒有最大化按鈕。MinimizeSize屬性用于設置窗體可以實現(xiàn)的最小尺寸,即窗體大小的最小值MaximizeBox屬性用于設置窗體可以實現(xiàn)的最大尺寸,即窗體大小的最大值例如,設置窗體為固定大小的代碼為:this.MaximumSize = this.Size;this.MinimumSize = this.Size;TopMost屬性用來決定窗體是否是一個置頂窗體。所謂置頂窗體,是指該窗
43、體會永遠出現(xiàn)其它窗口的前面,不會被其它窗口覆蓋。該屬性為True時,窗體是置頂窗體。默認為False。StartPosition屬性用來設置窗體顯示時的起始位置。如該屬性設置為CenterScreen,則窗體則出現(xiàn)在屏幕的中心。任務2.4 學習窗體對象窗體常用屬性窗體常用方法窗體常用事件1.Focus( )方法 Focus()方法可以使窗體獲得焦點。 2. Show( )方法 Show()方法用于顯示窗體,使窗體可見。3. ShowDialog( )方法 ShowDialog()方法以模態(tài)對話框方式顯示窗體。任務2.4 學習窗體對象窗體常用屬性窗體常用方法窗體常用事件事件事件觸發(fā)時間Click
44、對象被鼠標單擊時發(fā)生Doubleclick對象被鼠標雙擊時發(fā)生GotFocus對象得到焦點時發(fā)生LostFocus對象失去焦點時發(fā)生MouseDown用戶在對象上按下鼠標按鈕時發(fā)生MouseEnter鼠標指針進入對象時發(fā)生MouseHover鼠標指針在對象上停留時發(fā)生MouseLeave鼠標指針離開對象時發(fā)生MouseMove鼠標指針在對象上移動時發(fā)生MouseUp用戶在對象上釋放鼠標按鈕時發(fā)生任務2.5 學習注釋注釋是為了方便閱讀而為代碼添加的簡短的解釋性說明。注釋不是語句,在編譯程序時,編譯器會忽略注釋內(nèi)容,不會對其進行編譯,更不會執(zhí)行注釋。在編程時,我們應養(yǎng)成書寫注釋的良好習慣。C#的注
45、釋符號有兩種:/* */(成對使用)和/。任務2.5 學習注釋通過選擇一行或多行代碼,然后在“編輯”工具欄上選擇“注釋”( ) 按鈕和“取消注釋”( ) 按鈕,可以添加或移除某段代碼的注釋符。這種方法在為連續(xù)的多行代碼加注釋時會更加方便。若在某個方法前連續(xù)輸入三個/(斜杠),Visual Studio 2010會自動加入一個摘要(Summary),可以在摘要中加入以上功能注釋。摘要注釋任務2.6 學習MessageBox對象在.NET Framework中,使用MessageBox對象來實現(xiàn)消息對話框。MessageBox對象的共享方法Show()方法的語法為: MessageBox.Show
46、(消息,標題,按鈕種類,圖標種類);要顯示的提示信息消息對話框顯示的標題信息消息對話框中按鈕的種類及個數(shù)消息對話框中顯示圖標的類型652.6.1 消息框(MessageBox)消息框是Windows窗體應用程序中經(jīng)常用于人機交互操作的對象之一,用來顯示簡短的提示信息和幾個按鈕。顯示消息框之后,程序處于等待狀態(tài),用戶必須單擊消息框中的某個按鈕之后,程序才會繼續(xù)運行。任務2.6 學習MessageBox對象MessageBox.Show(消息對話框);MessageBox.Show(消息對話框, 標題);MessageBox.Show(消息對話框, 兩個按鈕, MessageBoxButtons.
47、OKCancel);MessageBox.Show(“消息對話框”, “三個按鈕”, MessageBoxButtons.AbortRetryIgnore);MessageBox.Show(消息對話框, 有圖標, MessageBoxButtons.OK, MessageBoxIcon.Error);執(zhí)行結果參加課本P23.67無返回值的消息框MessageBox.Show(text,title,buttons,icon);text 提示信息title 標題欄上的提示信息buttons 按鈕的組合樣式icon 圖標樣式68有返回值的消息框 DialogResult var = MessageB
48、ox.Show(text,Text, buttons,icon);69例2.6 顯示消息框中被選擇按鈕返回值private void button1_Click(object sender, EventArgs e) DialogResult result = MessageBox.Show(“是否保存已修改過的內(nèi) 容?, 保存文件, MessageBoxButtons.YesNoCancel); label1.Text = 您剛才選擇的按鈕是: + result; 70MessageBoxButtons集合的枚舉選項 71MessageBoxIcon集合的枚舉選項 72DialogResul
49、t的枚舉常量 使用實例MessageBox.Show()共有21中重載方法?,F(xiàn)將其常見用法總結如下:1.MessageBox.Show(Hello);最簡單的,只顯示提示信息。 2.MessageBox.Show(There are something wrong!,ERROR);可以給消息框加上標題。 3.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel) =DialogResult.OK)/delete詢問是否刪除時會用到這個。 4.if(MessageBox.Show(Delet
50、e this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question) =DialogResult.OK)/delete可以給MessageBox加上一個Icon,.net提供常見的Icon供選擇。 5.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2) =DialogResult.OK
51、)/delete可以改變MessageBox的默認焦點,如下: 6.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2,MessageBoxOptions.RtlReading) =DialogResult.OK)/delete反向顯示: 7.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButto
52、ns.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2,MessageBoxOptions.RightAlign,true) =DialogResult.OK)/delete添加Help按鈕: 8.if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.RtlRead
53、ing,/folder/file.htm) =DialogResult.OK)/delete指定幫助文件的路徑,點擊即可打開該路徑下的幫助文件。 9./HelpNavigator指定常數(shù)來指示要顯示的幫助文件元素。Find幫助文件將打開到搜索頁。if(MessageBox.Show(Delete this user?,Confirm Message,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.RtlReading,/folder/file
54、.htm,HelpNavigator.Find) =DialogResult.OK)/delete MessageBox課堂練習課后p24:在電子時鐘程序中添加一個按鈕控件,其Text屬性為“關于”,單擊這個按鈕時,使用MessageBox對象顯示信息“這是我的第一個應用程序”任務2.7 學習DateTime類型DateTime結構,用于表示某個時刻,通常用來表示日期以及一天中的某個具體時間。通過使用DataTime的屬性、方法可以獲取時間中的任意部分和格式。 任務2.7 學習DateTime類型實例化 DateTime 對象DateTime date1 = new DateTime(2008
55、, 5, 1, 8, 30, 52);年份月份日小時分鐘秒此時,date1變量代表的日期時間為:2008年5月1日8點30分52秒任務2.7 學習DateTime類型Now 屬性DataTime的Now屬性用于獲取計算機上的當前日期和時間,表示為本地時間。例如: DateTime date1 = DateTime.Now;此時,date1變量代表的日期時間為:當前日期和時間任務2.7 學習DateTime類型DateTime 的值本身無法以文本的形式顯示,使用ToString()方法可以將日期和時間以字符串的形式顯示出來。例如: lblClock.Text = DateTime.Now.ToS
56、tring();此時,lblClock標簽控件中的文字為:當前日期和時間的字符串形式也可以使用Parse()using System;public class switchTestpublic static void Main()int num;Console.WriteLine(“請輸入一個1-7之間的數(shù)字:”);string input = Console.ReadLine();num = int.Parse(input);/同理也有l(wèi)ong.parse(),datetime.parse()等等 switch (num)case 1: Console.WriteLine(Monday);b
57、reak;case 2: Console.WriteLine(Tuesday);break;case 3: Console.WriteLine(Wednesday);break;case 4: Console.WriteLine(Thursday);break;case 5: Console.WriteLine(Friday);break;case 6: Console.WriteLine(Saturday);break;case 7: Console.WriteLine(Sunday);break;default: Console.WriteLine(輸入的數(shù)字不正確!);break;Clock源程序using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace Clock static class Program / / 應用程序入口點 /
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024飼料原料出口銷售合同
- 職業(yè)學院學生資助工作實施辦法
- 2024年建筑工程施工及安全責任保險合同范本3篇
- 2024年裝修項目監(jiān)理合同3篇
- 2025年度豪華大理石臺面定制與安裝服務合同范本3篇
- 2024年租房責任保險合同2篇
- 2024年股權轉讓合同(雙邊)
- 2024年簡明鋼結構購買合同
- 構造地質學看圖題及答案
- 2025年度網(wǎng)絡安全責任書協(xié)議書保障數(shù)據(jù)安全3篇
- FZ/T 81024-2022機織披風
- GB/T 24123-2009電容器用金屬化薄膜
- 艾滋病梅毒乙肝實驗室檢測
- 國鐵橋梁人行道支架制作及安裝施工要點課件
- 領導科學全套精講課件
- 粵教版地理七年級下冊全冊課件
- 小學科學蘇教版六年級上冊全冊精華知識點(2022新版)
- 萎縮性胃炎共識解讀
- 《中外資產(chǎn)評估準則》課件第8章 澳大利亞與新西蘭資產(chǎn)評估準則
- 2022版義務教育語文課程標準(2022版含新增和修訂部分)
- 精品金屬線管布線施工工程施工方法
評論
0/150
提交評論