版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2019基于C#的可視化編程基礎(chǔ)教程2019第一章 C#基礎(chǔ)C#基礎(chǔ)值類(lèi)型引用數(shù)據(jù)類(lèi)型枚舉類(lèi)型基本概念、數(shù)據(jù)類(lèi)型循環(huán)語(yǔ)句:while循環(huán)、do.while循環(huán)、for循環(huán)跳轉(zhuǎn)語(yǔ)句:break語(yǔ)句、continue語(yǔ)句、goto語(yǔ)句、return語(yǔ)句循環(huán)與跳轉(zhuǎn)語(yǔ)句類(lèi)的概念、聲明封裝、繼承、多態(tài)類(lèi)與對(duì)象ArrayList類(lèi)Hashtable類(lèi)集合、命名空間第一章 C#基礎(chǔ)1.1 C#概述C#是微軟公司推出的一種語(yǔ)法簡(jiǎn)潔、類(lèi)型安全的面向?qū)ο蟮木幊陶Z(yǔ)言,可以通過(guò)它編寫(xiě)在.NET Framework 上運(yùn)行的各種安全可靠的應(yīng)用程序。近幾年C#的使用人數(shù)呈現(xiàn)上升趨勢(shì),這也說(shuō)明了C#語(yǔ)言正在被更多人所認(rèn)同。
2、C#有以下特點(diǎn):a.語(yǔ)法簡(jiǎn)潔。不允許直接操作內(nèi)存,去掉了指針操作。b.面向?qū)ο蟮脑O(shè)計(jì)。封裝、繼承和多態(tài)。c.與Web緊密結(jié)合。支持絕大多數(shù)的Web標(biāo)準(zhǔn),如:HTML、XML、SOAP等。d.強(qiáng)大的安全機(jī)制。e.兼容性。因?yàn)镃#遵循.NET的公共語(yǔ)言規(guī)范,從而能夠保證與其他語(yǔ)言開(kāi)發(fā)的組件兼容。f.靈活的版本處理技術(shù)。C#語(yǔ)言本身內(nèi)置了版本控制功能,因此開(kāi)發(fā)人員能更加容易地開(kāi)發(fā)和維護(hù)應(yīng)用程序。g.完善的錯(cuò)誤、異常處理機(jī)制。C#提供了完善的錯(cuò)誤異常處理機(jī)制,使程序在交付使用時(shí)能夠更加健壯。第一章 C#基礎(chǔ)1.1 C#概述例【1.1】使用Visual Studio和C#語(yǔ)言來(lái)編寫(xiě)第一個(gè)程序,程序在控制
3、臺(tái)上顯示字符串“Hello World!”第一章 C#基礎(chǔ)創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,使用WriteLine方法輸出“Hello World!”字符串。static void Main(string args) /在main方法下編寫(xiě)代碼輸出數(shù)據(jù) Console.WriteLine(“Hello World!”);/輸出“Hello World!”Console.ReadLine();值類(lèi)型數(shù)據(jù)類(lèi)型值類(lèi)型變量直接存儲(chǔ)其數(shù)據(jù)值,主要包含整數(shù)類(lèi)型、浮點(diǎn)類(lèi)型以及布爾類(lèi)型等。值類(lèi)型變量在堆棧中進(jìn)行分配引用類(lèi)型引用類(lèi)型是構(gòu)建C#應(yīng)用程序的主要對(duì)象類(lèi)型數(shù)據(jù)。在應(yīng)用程序執(zhí)行過(guò)程中,預(yù)先定義的對(duì)象類(lèi)型以new創(chuàng)建
4、對(duì)象實(shí)例,并存儲(chǔ)在堆棧中。枚舉類(lèi)型枚舉類(lèi)型是一種獨(dú)特的值類(lèi)型,它用于聲明一組具有相同性質(zhì)的常量。編寫(xiě)與日期相關(guān)的應(yīng)用程序時(shí),經(jīng)常需要使用年、月、日、星期等數(shù)據(jù),可以將這些數(shù)據(jù)組織成多個(gè)不同名稱的枚舉類(lèi)型。第一章 C#基礎(chǔ)1.2 基本數(shù)據(jù)類(lèi)型第一章 C#基礎(chǔ)值類(lèi)型整數(shù)類(lèi)型類(lèi) 型說(shuō) 明范 圍sbyte8位有符號(hào)整數(shù)-128127short16位有符號(hào)整數(shù)-3276832767int32位有符號(hào)整數(shù)-21474836482147483647long64位有符號(hào)整數(shù)-92233720368547758089223372036854775807byte8位無(wú)符號(hào)整數(shù)0255ushort16位無(wú)符號(hào)整數(shù)0
5、65535uint32位無(wú)符號(hào)整數(shù)04294967295ulong64位無(wú)符號(hào)整數(shù)018446744073709551615整數(shù)類(lèi)型代表一種沒(méi)有小數(shù)點(diǎn)的整數(shù)數(shù)值,在C#中內(nèi)置的整數(shù)類(lèi)型如表1-1所示。表1-1 C#內(nèi)置的整數(shù)類(lèi)型第一章 C#基礎(chǔ)浮點(diǎn)類(lèi)型變量主要用于處理含有小數(shù)的數(shù)值數(shù)據(jù),浮點(diǎn)類(lèi)型主要包含float和double兩種數(shù)值類(lèi)型。表1-2 浮點(diǎn)類(lèi)型及描述類(lèi) 型說(shuō) 明范 圍float精確到7位數(shù)1.510-453.41038double精確到1516位數(shù)5010-3241.710308 布爾類(lèi)型主要是用來(lái)表示true/false值,一個(gè)布爾類(lèi)型的變量,其值只能是true或者false,
6、不能將其他的值指定給布爾類(lèi)型變量,布爾類(lèi)型變量不能與其他類(lèi)型進(jìn)行轉(zhuǎn)值類(lèi)型浮點(diǎn)類(lèi)型值類(lèi)型布爾類(lèi)型第一章 C#基礎(chǔ)引用類(lèi)型是構(gòu)建C#應(yīng)用程序的主要對(duì)象類(lèi)型數(shù)據(jù)。在應(yīng)用程序執(zhí)行過(guò)程中,預(yù)先定義的對(duì)象類(lèi)型以new創(chuàng)建對(duì)象實(shí)例,并存儲(chǔ)在堆棧中。引用類(lèi)型具有如下特征:a. 必須在托管堆中為引用類(lèi)型變量分配內(nèi)存。b. 必須使用關(guān)鍵字new來(lái)創(chuàng)建引用類(lèi)型變量。c. 在托管堆中分配的每個(gè)對(duì)象都有與之相關(guān)聯(lián)的附加成員,這些成員必須被初始化。d. 引用類(lèi)型變量是由垃圾回收機(jī)制來(lái)管理的。e. 多個(gè)引用類(lèi)型變量可以引用同一對(duì)象,這種情形下,對(duì)一個(gè)變量的操作會(huì)影響另一個(gè)變量所引用的同一對(duì)象。f. 引用類(lèi)型被賦值前的值都是
7、null。所有被稱為“類(lèi)”的都是引用類(lèi)型,主要包括類(lèi)、接口、數(shù)組和委托。下面通過(guò)一個(gè)實(shí)例來(lái)演示如何使用引用類(lèi)型。引用類(lèi)型第一章 C#基礎(chǔ)枚舉類(lèi)型是一種獨(dú)特的值類(lèi)型,它用于聲明一組具有相同性質(zhì)的常量。編寫(xiě)與日期相關(guān)的應(yīng)用程序時(shí),經(jīng)常需要使用年、月、日、星期等數(shù)據(jù),可以將這些數(shù)據(jù)組織成多個(gè)不同名稱的枚舉類(lèi)型。C#中使用關(guān)鍵字enum聲明枚舉,其形式如下:大括號(hào)中的內(nèi)容為枚舉值列表,每個(gè)枚舉值均對(duì)應(yīng)一個(gè)枚舉值名稱,value1valueN為整數(shù)數(shù)據(jù)類(lèi)型,list1listN為枚舉值的標(biāo)識(shí)名稱。枚舉類(lèi)型enum 枚舉名list1 = value1, list2 = value2, list3 = va
8、lue3, .listN = valueN, 循環(huán)語(yǔ)句while語(yǔ)句、do.while語(yǔ)句、for語(yǔ)句、foreach語(yǔ)句跳轉(zhuǎn)語(yǔ)句break語(yǔ)句、continue語(yǔ)句、goto語(yǔ)句、return語(yǔ)句點(diǎn)擊此處添加標(biāo)題內(nèi)容1.3 循環(huán)與跳轉(zhuǎn)語(yǔ)句循環(huán)語(yǔ)句主要用于重復(fù)執(zhí)行嵌入語(yǔ)句,在C#中,常見(jiàn)的循環(huán)語(yǔ)句有while語(yǔ)句、do.while語(yǔ)句、for語(yǔ)句和foreach語(yǔ)句。第一章 C#基礎(chǔ)循環(huán)語(yǔ)句while(【布爾表達(dá)式】)【語(yǔ)句塊】1.while語(yǔ)句執(zhí)行順序:(1)計(jì)算【布爾表達(dá)式】的值。(2)如果【布爾表達(dá)式】的值為true,程序執(zhí)行【語(yǔ)句塊】。執(zhí)行完畢重新計(jì)算【布爾表達(dá)式】的值是否為true。
9、(3)如果【布爾表達(dá)式】的值為false,則控制將轉(zhuǎn)移到while語(yǔ)句的結(jié)尾?!纠?.5】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,聲明一個(gè)int類(lèi)型的數(shù)組,并初始化數(shù)組,然后通過(guò)while語(yǔ)句循環(huán)輸出數(shù)組中的所有成員。第一章 C#基礎(chǔ)循環(huán)語(yǔ)句static void Main(string args)int num = new int61,2,3,4,5,6; /聲明一個(gè)int類(lèi)型的數(shù)組并初始化int s = 0; /聲明一個(gè)int類(lèi)型的變量s并初始化while(s6) /調(diào)用while語(yǔ)句,當(dāng)s小于6時(shí)執(zhí)行Console.WriteLine(“num0的值為1”,s,nums);s+; /s自增1 Conso
10、le.ReadLine();第一章 C#基礎(chǔ)循環(huán)語(yǔ)句do【語(yǔ)句塊】while(【布爾表達(dá)式】);2.do.while語(yǔ)句執(zhí)行順序:(1)程序首先執(zhí)行【語(yǔ)句塊】。(2)當(dāng)程序到達(dá)【語(yǔ)句塊】的結(jié)束點(diǎn)時(shí),計(jì)算【布爾表達(dá)式】的值,如果【布爾表達(dá)式】的值是true,程序跳到do.while語(yǔ)句的開(kāi)頭,否則,結(jié)束循環(huán)?!纠?.6】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,聲明一個(gè)bool類(lèi)型的變量term,并初始化為false,再聲明一個(gè)int類(lèi)型的數(shù)組,并初始化,然后調(diào)用do.while語(yǔ)句,通過(guò)for語(yǔ)句循環(huán)輸出數(shù)組中的值。第一章 C#基礎(chǔ)static void Main(string args)bool term =
11、 false; /聲明一個(gè)bool類(lèi)型的變量term并初始化為falseint myArray = new int50,1,2,3,4;/聲明一個(gè)int類(lèi)型數(shù)組并初始化dofor(int i=0;imyArray.Length;i+) /調(diào)用for語(yǔ)句輸出數(shù)組中所有數(shù)據(jù)Console.WriteLine(myArrayi); /輸出數(shù)組中的數(shù)據(jù)while(term); /設(shè)置do.while語(yǔ)句的條件Console.ReadLine();第一章 C#基礎(chǔ)循環(huán)語(yǔ)句for(【初始化表達(dá)式】;【條件表達(dá)式】;【迭代表達(dá)式】)【語(yǔ)句塊】3.for語(yǔ)句執(zhí)行順序:(1)如果有【初始表達(dá)式】,則按變量初始值
12、設(shè)定項(xiàng)或語(yǔ)句表達(dá)式的書(shū)寫(xiě)順序指定它們,此步驟只執(zhí)行一次。(2)如果存在【條件表達(dá)式】,則計(jì)算它。(3)如果不存在【條件表達(dá)式】,則程序?qū)⑥D(zhuǎn)移到嵌入語(yǔ)句。如果程序到達(dá)了嵌入語(yǔ)句的結(jié)束點(diǎn),按順序計(jì)算for迭代表達(dá)式,然后從上一個(gè)步驟中for條件的計(jì)算開(kāi)始,執(zhí)行另一次迭代。第一章 C#基礎(chǔ)static void Main(string args)int myArray = new int50,1,2,3,4;for(int i=0;imyArray.Length;i+)Console.WriteLine(“myArray0的值是:1”,i,myArrayi);Console.ReadLine();【
13、例1.7】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,首先聲明一個(gè)int類(lèi)型的數(shù)組,然后初始化數(shù)組,最后使用for循環(huán)語(yǔ)句遍歷數(shù)組,并將數(shù)組中的值輸出。第一章 C#基礎(chǔ)循環(huán)語(yǔ)句foreach(【類(lèi)型】【迭代變量名】 in 【集合類(lèi)型表達(dá)式】)【語(yǔ)句塊】4.foreach語(yǔ)句foreach語(yǔ)句用于枚舉一個(gè)集合的元素,并對(duì)該集合中的每一個(gè)元素執(zhí)行一次嵌入語(yǔ)句,但是foreach語(yǔ)句不能用于更改集合內(nèi)容,以避免產(chǎn)生不可預(yù)知的錯(cuò)誤。foreach語(yǔ)句的基本形式如下:第一章 C#基礎(chǔ)跳轉(zhuǎn)語(yǔ)句1.break語(yǔ)句 跳轉(zhuǎn)語(yǔ)句主要用于無(wú)條件的轉(zhuǎn)移控制,跳轉(zhuǎn)語(yǔ)句會(huì)將控制跳轉(zhuǎn)到某個(gè)位置,這個(gè)位置就成為跳轉(zhuǎn)語(yǔ)句的目標(biāo),如果跳轉(zhuǎn)語(yǔ)句出現(xiàn)在
14、一個(gè)語(yǔ)句塊內(nèi),而跳轉(zhuǎn)語(yǔ)句的目標(biāo)卻在該語(yǔ)句塊之外,則稱該跳轉(zhuǎn)語(yǔ)句退出該語(yǔ)句塊。 break語(yǔ)句只能應(yīng)用在switch、while、do.while、for、foreach語(yǔ)句中,break語(yǔ)句包含在這幾種語(yǔ)句中,否則會(huì)出現(xiàn)編譯錯(cuò)誤。當(dāng)多條switch、while、do.while、for、foreach語(yǔ)句相互嵌套時(shí),break語(yǔ)句只應(yīng)用于最里層的語(yǔ)句,如果要穿越多個(gè)嵌套層,則必須使用goto語(yǔ)句。第一章 C#基礎(chǔ)跳轉(zhuǎn)語(yǔ)句2.continue語(yǔ)句 continue語(yǔ)句只能應(yīng)用于while、do.while、for、或foreach語(yǔ)句中,用來(lái)忽略循環(huán)語(yǔ)句塊內(nèi)位于它后面的代碼而直接開(kāi)始一次新的循環(huán)
15、。當(dāng)多個(gè)while、do.while、for或foreach語(yǔ)句相互嵌套時(shí),continue語(yǔ)句使直接包含它的循環(huán)語(yǔ)句開(kāi)始一次新的循環(huán)。第一章 C#基礎(chǔ)跳轉(zhuǎn)語(yǔ)句3.goto語(yǔ)句 goto語(yǔ)句用于將控制轉(zhuǎn)移到由標(biāo)簽標(biāo)記的語(yǔ)句,goto語(yǔ)句可以被應(yīng)用在switch語(yǔ)句中的case標(biāo)簽、default標(biāo)簽,以及標(biāo)記語(yǔ)句所聲明的標(biāo)簽。goto語(yǔ)句的3種形式如下:goto【標(biāo)簽】goto case【參數(shù)表達(dá)式】goto default goto【標(biāo)簽】語(yǔ)句的目標(biāo)是給定標(biāo)簽的標(biāo)記語(yǔ)句,goto case【參數(shù)表達(dá)式】語(yǔ)句的目標(biāo)是它所在的switch語(yǔ)句中的某個(gè)語(yǔ)句列表,此列表包含一個(gè)具有給定常數(shù)值的cas
16、e標(biāo)簽,goto default語(yǔ)句的目標(biāo)是它所在的switch語(yǔ)句中的default標(biāo)簽。第一章 C#基礎(chǔ)跳轉(zhuǎn)語(yǔ)句4.return語(yǔ)句 return語(yǔ)句用于退出類(lèi)的方法,是控制返回方法的調(diào)用者,如果方法有返回類(lèi)型,return語(yǔ)句必須返回這個(gè)類(lèi)型的值,如果方法沒(méi)有返回類(lèi)型,應(yīng)使用沒(méi)有表達(dá)式的return語(yǔ)句。【例1.12】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,建立一個(gè)返回類(lèi)型為string類(lèi)型的方法,利用return語(yǔ)句返回一個(gè)string類(lèi)型的值,然后在main方法中調(diào)用這個(gè)自定義的方法,并輸出這個(gè)方法的返回值。第一章 C#基礎(chǔ)跳轉(zhuǎn)語(yǔ)句static string MyStr(string str) /創(chuàng)
17、建一個(gè)string類(lèi)型方法 string outStr = “您輸入的數(shù)據(jù)是:”+str;/聲明一個(gè)字符串變量并為其賦值return outStr; /使用return語(yǔ)句返回字符串變量static void Main(string args)Console.WriteLine(“請(qǐng)您輸入內(nèi)容:”);/輸出提示信息string inputStr = Console.ReadLine();/獲取輸入信息Console.WriteLine(MyStr(inputStr); /調(diào)用MyStr方法并將結(jié)果顯示出來(lái)Console.ReadLine();1.概念:類(lèi)是對(duì)象概念在面向?qū)ο缶幊陶Z(yǔ)言中的反映,是
18、相同對(duì)象的集合。類(lèi)描述了一系列在概念上有相同含義的對(duì)象,并為這些對(duì)象統(tǒng)一定義了編程語(yǔ)言上的屬性和方法。如水果就可以看成一個(gè)類(lèi),蘋(píng)果、葡萄都是該類(lèi)的子類(lèi),蘋(píng)果的生產(chǎn)地、名稱、價(jià)格相當(dāng)于該類(lèi)的屬性,蘋(píng)果的種植方法相當(dāng)于類(lèi)的方法。第一章 C#基礎(chǔ)1.4 類(lèi)與對(duì)象2.類(lèi)的聲明:C#中,類(lèi)是使用關(guān)鍵字class來(lái)聲明的類(lèi)修飾符 class 類(lèi)名【例1.13】下面以汽車(chē)為例聲明一個(gè)類(lèi)。第一章 C#基礎(chǔ)1.4 類(lèi)與對(duì)象public class Car public int number;/編號(hào) public string color;/顏色 public string brand;/廠家public是類(lèi)的修
19、飾符,下面介紹幾種常見(jiàn)的修飾符。a.public:不限制對(duì)該類(lèi)的訪問(wèn)tected:只能從其所在類(lèi)和所在類(lèi)的子類(lèi)進(jìn)行訪問(wèn)。ernal:只有其所在類(lèi)才能訪問(wèn)。d.private:只有.NET中的應(yīng)用程序或庫(kù)才能訪問(wèn)。e.abstract:抽象類(lèi),不允許建立類(lèi)的實(shí)例。f.sealed:密封類(lèi),不允許被繼承。3.對(duì)象的聲明和實(shí)例化:對(duì)象是具有數(shù)據(jù)、行為和標(biāo)識(shí)的編程結(jié)構(gòu),它是面向?qū)ο髴?yīng)用程序的一個(gè)組成部分,這個(gè)組成部分封裝了部分應(yīng)用程序,這部分程序可以是一個(gè)過(guò)程、一些數(shù)據(jù)或一些更抽象的實(shí)體。對(duì)象包含變量成員和方法類(lèi)型,它所包含的變量組成了存儲(chǔ)在對(duì)象中的數(shù)據(jù),而其包含的方法可以訪問(wèn)對(duì)象的變量,略為復(fù)雜的對(duì)
20、象可能不包含任何數(shù)據(jù),而只包含方法,并使用方法表示一個(gè)過(guò)程。C#中的對(duì)象是把類(lèi)實(shí)例化,這表示創(chuàng)建一個(gè)類(lèi)的實(shí)例,“類(lèi)的實(shí)例”和對(duì)象表示相同的含義,需要注意的是,“類(lèi)”和“對(duì)象”是完全不同的概念。第一章 C#基礎(chǔ)1.4 類(lèi)與對(duì)象4.類(lèi)與對(duì)象的關(guān)系類(lèi)是一種抽象的數(shù)據(jù)類(lèi)型,但是其抽象的程度可能不同,而對(duì)象就是一個(gè)類(lèi)的實(shí)例。類(lèi)就是有相同或相似結(jié)構(gòu)、操作、和約束規(guī)則的對(duì)象組成的集合,而對(duì)象是某一個(gè)類(lèi)的具體化實(shí)例,每一個(gè)類(lèi)都是具有某些共同特征的對(duì)象的抽象。第一章 C#基礎(chǔ)1.4 類(lèi)與對(duì)象1.類(lèi)的封裝 C#中可以使用類(lèi)來(lái)達(dá)到數(shù)據(jù)封裝的效果,這樣就可以使數(shù)據(jù)與方法封裝成單一元素,以便于通過(guò)方法存取數(shù)據(jù),除此之外
21、,還可以控制數(shù)據(jù)的存儲(chǔ)方式。封裝的目的是增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只是通過(guò)外部接口這一特定的訪問(wèn)權(quán)限來(lái)使用類(lèi)的成員。第一章 C#基礎(chǔ)1.4 類(lèi)的面向?qū)ο筇匦?.類(lèi)的繼承繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)中最重要的概念之一。繼承允許我們根據(jù)一個(gè)類(lèi)來(lái)定義另一個(gè)類(lèi),這使得創(chuàng)建和維護(hù)應(yīng)用程序變得更容易。同時(shí)也有利于重用代碼和節(jié)省開(kāi)發(fā)時(shí)間。當(dāng)創(chuàng)建一個(gè)類(lèi)時(shí),程序員不需要完全重新編寫(xiě)新的數(shù)據(jù)成員和成員函數(shù),只需要設(shè)計(jì)一個(gè)新的類(lèi),繼承已有類(lèi)的成員即可。已有的類(lèi)被稱為基類(lèi),新的類(lèi)被稱為派生類(lèi)。C#中提供了類(lèi)的繼承機(jī)制,但只支持單繼承,而不支持多繼承,即在C#中一次只允許繼承一個(gè)類(lèi),不能同時(shí)繼承多
22、個(gè)類(lèi)。第一章 C#基礎(chǔ)1.4 類(lèi)的面向?qū)ο筇匦浴纠?.16】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,其中定義一個(gè)Shape類(lèi),然后定義一個(gè)Rectangle類(lèi),該類(lèi)繼承于Shape類(lèi)。在主程序中通過(guò)Rectangle類(lèi)的對(duì)象調(diào)用Shape類(lèi)中的方法。第一章 C#基礎(chǔ)1.4 類(lèi)的面向?qū)ο筇匦詂lass Shape /父類(lèi)protected int width;protected int height;public void setWidth(int w)width = w;public void setHeight(int h)height = h;class Rectangle: Shape / 派生類(lèi) pu
23、blic int getArea() return (width * height); class RectangleTesterstatic void Main(string args)Rectangle Rect = new Rectangle();Rect.setWidth(5);Rect.setHeight(7);Console.WriteLine(總面積: 0, Rect.getArea(); / 打印對(duì)象的面積Console.ReadKey();3.類(lèi)的多態(tài)多態(tài)性意味著有多重形式。在面向?qū)ο缶幊谭妒街?,多態(tài)性往往表現(xiàn)為“一個(gè)接口,多個(gè)功能”。多態(tài)性可以是靜態(tài)的或動(dòng)態(tài)的。在靜態(tài)多態(tài)性
24、中,函數(shù)的響應(yīng)是在編譯時(shí)發(fā)生的。在動(dòng)態(tài)多態(tài)性中,函數(shù)的響應(yīng)是在運(yùn)行時(shí)發(fā)生的。在同一個(gè)范圍內(nèi)對(duì)相同的函數(shù)名有多個(gè)定義。函數(shù)的定義必須彼此不同,可以是參數(shù)列表中的參數(shù)類(lèi)型不同,也可以是參數(shù)個(gè)數(shù)不同。不能重載只有返回類(lèi)型不同的函數(shù)。下面的實(shí)例演示了幾個(gè)相同的函數(shù) print(),用于打印不同的數(shù)據(jù)類(lèi)型。第一章 C#基礎(chǔ)1.4 類(lèi)的面向?qū)ο筇匦浴纠?.17】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,在同一個(gè)范圍內(nèi)對(duì)相同的函數(shù)名有多個(gè)定義。第一章 C#基礎(chǔ)1.4 類(lèi)的面向?qū)ο筇匦詂lass Printdatavoid print(int i) Console.WriteLine(Printing int: 0, i );
25、void print(double f)Console.WriteLine(Printing float: 0 , f);void print(string s)Console.WriteLine(Printing string: 0, s);static void Main(string args)Printdata p = new Printdata();p.print(5); p.print(500.263); p.print(Hello C#);Console.ReadLine();ArrayList類(lèi)位于System.Collection命名空間下,它可以動(dòng)地添加和刪除元素,可以將A
26、rrayList類(lèi)看作擴(kuò)充了功能的數(shù)組,但它并不等同于數(shù)組。與數(shù)組相比,ArrayList類(lèi)為開(kāi)發(fā)人員提供了以下功能:第一章 C#基礎(chǔ)1.5 集合a.數(shù)組的容量是固定的,而ArrayList的容量可以根據(jù)需要自動(dòng)擴(kuò)充。b.ArrayList提供添加、刪除和插入某一范圍元素的方法,但在數(shù)組中,一次只能獲取或設(shè)置一個(gè)元素的值。c.ArrayList提供將只讀和固定大小包裝返回到集合的方法,而數(shù)組不提供。d.ArrayList只能是一維形式,而數(shù)組可以是多維的。1.5.1ArrayList類(lèi)-1.ArrayList類(lèi)的概述第一章 C#基礎(chǔ)ArrayList提供了3個(gè)構(gòu)造器,通過(guò)這3個(gè)構(gòu)造器可以有3種
27、聲明形式,下面分別介紹。(1)默認(rèn)構(gòu)造器,將會(huì)以默認(rèn)的大小來(lái)初始化內(nèi)部的數(shù)組。構(gòu)造器格式如下:public ArrayList();通過(guò)以上構(gòu)造器聲明ArrayList的語(yǔ)法格式如下:ArrayList list = new ArrayList();(2)用一個(gè)ICollection對(duì)象來(lái)構(gòu)造,并將該集合的元素加到ArrayList中。構(gòu)造器格式如下:public ArrayList(ICollection);通過(guò)以上構(gòu)造器聲明ArrayList的語(yǔ)法格式如下:ArrayList list = new ArrayList(arryName);a.list:ArrayList對(duì)象名。b.arry
28、Name:要添加集合的數(shù)組名。第一章 C#基礎(chǔ)(3)用指定的大小初始化內(nèi)部的數(shù)組。構(gòu)造器格式如下:public ArrayList(int);通過(guò)以上構(gòu)造器聲明ArrayList的語(yǔ)法格式如下:ArrayList list = new ArrayList(n);a.list:ArrayList對(duì)象名。b.n:對(duì)象的空間大小。ArrayList 的常用屬性及說(shuō)明如下表所示。屬 性說(shuō) 明Capacity獲取或設(shè)置 ArrayList 可以包含的元素個(gè)數(shù)Count獲取 ArrayList 中實(shí)際包含的元素個(gè)數(shù)IsFixedSize獲取一個(gè)值,表示 ArrayList 是否具有固定大小IsReadOn
29、ly獲取一個(gè)值,表示 ArrayList 是否只讀Item獲取或設(shè)置指定索引處的元素向ArrayList集合中添加元素時(shí),可以使用ArrayList類(lèi)提供的Add方法和Insert方法,下面對(duì)這兩個(gè)方法進(jìn)行詳細(xì)介紹。第一章 C#基礎(chǔ)(1)Add方法該方法用來(lái)將對(duì)象添加到ArrayList集合的結(jié)尾處,其語(yǔ)法格式如下:public vitual int Add(Object value)a.value:要添加到ArrayList的末尾處的Object,該值可以為空值。b.返回值:ArrayList索引,已在此處添加了value。2.ArrayList元素的添加第一章 C#基礎(chǔ)【例1.19】聲明一
30、個(gè)包含6個(gè)元素的一維數(shù)組,并使用該數(shù)組實(shí)例化一個(gè)ArrayList對(duì)象,然后使用Add方法為該ArrayList對(duì)象添加元素。2.ArrayList元素的添加代碼如下:int arr = new int1, 2, 3, 4, 5, 6;ArrayList List = new ArrayList(arr);List.Add(7);第一章 C#基礎(chǔ)(2)Insert方法該方法用來(lái)將元素插入ArrayList集合的指定索引處,其語(yǔ)法格式如下:public virtual void Insert(int index, Object value)a.index:從零開(kāi)始的索引處,應(yīng)在該位置插入valu
31、e。b.value:要插入的Object,該值可以為空引用。2.ArrayList元素的添加【例1.20】聲明一個(gè)包含6個(gè)元素的一維數(shù)組,并使用該數(shù)組實(shí)例化一個(gè)ArrayList對(duì)象,然后使用Insert方法在該ArrayList對(duì)象的指定索引處添加一個(gè)元素。代碼如下:int arr = new int1, 2, 3, 4, 5, 6;ArrayList List = new ArrayList(arr);List.Insert(3, 7);在ArrayList集合中刪除元素時(shí),可以使用ArrayList類(lèi)提供的Clear方法、Remove方法、RemoveAt方法和RemoveRange方法
32、。下面對(duì)這4個(gè)方法進(jìn)行詳細(xì)介紹。(1)Clear方法該方法用來(lái)從ArrayList中移除所有元素,其語(yǔ)法格式如下:public virtual void Clear()第一章 C#基礎(chǔ)3.ArrayList元素的刪除【例1.21】聲明一個(gè)包含6個(gè)元素的一維數(shù)組,并使用該數(shù)組實(shí)例化一個(gè)ArrayList對(duì)象,然后使用Clear方法清除ArrayList中的所有元素。int arr = new int1, 2, 3, 4, 5, 6;ArrayList List = new ArrayList(arr);List.Clear();(2)Remove方法該方法用來(lái)從ArrayList中移除特定對(duì)象的
33、第一匹配項(xiàng),其語(yǔ)法格式如下:public virtual void Remove(Object obj)第一章 C#基礎(chǔ)3.ArrayList元素的刪除【例1.22】聲明一個(gè)包含6個(gè)元素的一維數(shù)組,并使用該數(shù)組實(shí)例化一個(gè)ArrayList對(duì)象,然后使用Remove方法從聲明的ArrayList對(duì)象中移除與3匹配的元素。int arr = new int1, 2, 3, 4, 5, 6;ArrayList List = new ArrayList(arr);List.Remove(3);(3)RemoveAt方法該方法用來(lái)移除ArrayList的指定索引處的元素,其語(yǔ)法格式如下:public v
34、irtual void RemoveAt(int index)第一章 C#基礎(chǔ)3.ArrayList元素的刪除【例1.23】聲明一個(gè)包含6個(gè)元素的一維數(shù)組,并使用該數(shù)組實(shí)例化一個(gè)ArrayList對(duì)象,然后使用RemoveAt方法從聲明的ArrayList對(duì)象中移除索引為3的元素。代碼如下:int arr = new int1, 2, 3, 4, 5, 6;ArrayList List = new ArrayList(arr);List.RemoveAt(3);(4)RemoveRange方法該方法用來(lái)從ArrayList中移除一定范圍的元素,其語(yǔ)法格式如下:public virtual vo
35、id RemoveRange(int index, int count)第一章 C#基礎(chǔ)3.ArrayList元素的刪除【例1.24】聲明一個(gè)包含6個(gè)元素的一維數(shù)組,并使用該數(shù)組實(shí)例化一個(gè)ArrayList對(duì)象,然后使用RemoveRange方法從索引3處刪除兩個(gè)元素。代碼如下:int arr = new int1, 2, 3, 4, 5, 6;ArrayList List = new ArrayList(arr);List.RemoveRange(3, 2);ArrayList集合的遍歷與數(shù)組類(lèi)似,都可使用foreach語(yǔ)句,下面通過(guò)一個(gè)實(shí)例說(shuō)明如何遍歷ArrayList集合中的元素。第一章
36、 C#基礎(chǔ)4.ArrayList的遍歷【例1.25】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,其中實(shí)例化一個(gè)ArrayList對(duì)象,并使用Add方法向ArrayList集合中添加兩個(gè)元素,然后使用foreach語(yǔ)句遍歷ArrayList集合中的各個(gè)元素并輸出。代碼如下:static void Main(string args)ArrayList list = new ArrayList();list.Add(Hello);list.Add(World);foreach(string str in list)Console.WriteLine(str);查找ArrayList集合中的元素時(shí),可以使用ArrayLi
37、st類(lèi)提供的Contains方法、IndexOf方法和LastIndexOf方法。IndexOf方法和LastIndexOf方法的用法與string字符串類(lèi)的同名方法的用法基本相同,下面主要對(duì)Contains方法進(jìn)行詳細(xì)介紹。第一章 C#基礎(chǔ)5.ArrayList元素的查找【例1.26】聲明一個(gè)包含6個(gè)元素的一維數(shù)組,并使用該數(shù)組實(shí)例化一個(gè)ArrayList對(duì)象,然后使用Contains方法判斷數(shù)字2是否在ArrayList 集合中。代碼如下:int arr = new int1, 2, 3, 4, 5, 6;ArrayList List = new ArrayList(arr);Consol
38、e.WriteLine(List.Contains(2);Contains方法用來(lái)確定某元素是否在ArrayList集合中,其語(yǔ)法格式如下:public virtual bool Contains(Object item)Hashtable通常稱為哈希表,它表示鍵/值對(duì)的集合,這些鍵/值對(duì)根據(jù)鍵的哈希代碼進(jìn)行組織,它的每個(gè)元素都是一個(gè)存儲(chǔ)在DictionaryEntry對(duì)象中的鍵/值對(duì),鍵不能為空,但值可以。Hashtable的構(gòu)造函數(shù)有多種,這里介紹兩個(gè)最常用的。第一章 C#基礎(chǔ)1.5.2 Hashtable類(lèi)(2)使用指定的初始容量、默認(rèn)加載因子、默認(rèn)哈希代碼提供程序和默認(rèn)比較器來(lái)初始化H
39、ashtable類(lèi)的新的空實(shí)例,語(yǔ)法格式如下:public Hashtable(int capacity)capacity:Hashtable對(duì)象最初可包含的元素的近似數(shù)目。1.Hashtable概述(1)使用默認(rèn)的初始容量、加載因子、哈希代碼提供程序和比較器來(lái)初始化Hashtable類(lèi)的新的空實(shí)例,語(yǔ)法格式如下:public Hashtable()第一章 C#基礎(chǔ)Hashtable的常用屬性及說(shuō)明如下表所示1.Hashtable概述屬 性說(shuō) 明Count獲取包含在Hashtable中的鍵/值對(duì)的數(shù)目IsFixedSize獲取一個(gè)值,該值指示Hashtable是否具有固定大小IsReadOnl
40、y獲取一個(gè)值,該值指示Hashtable是否為只讀IsSynchronized獲取一個(gè)值,該值指示是否同步對(duì)Hashtable的訪問(wèn)Item獲取或設(shè)置與指定的鍵相關(guān)聯(lián)的值Keys獲取包含Hashtable中的鍵的ICollectionSyncRoot獲取可用于同步Hashtable訪問(wèn)的對(duì)象Values獲取包含Hashtable中的值的ICollection向Hashtable中添加元素時(shí),可以使用Hashtable類(lèi)提供的Add方法。下面對(duì)該方法進(jìn)行詳細(xì)介紹。第一章 C#基礎(chǔ) 【例1.27】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,其中實(shí)例化一個(gè)Hashtable對(duì)象,并使用Add方法為該Hashtable對(duì)
41、象添加3個(gè)元素。2.Hashtable元素的添加 Add方法用來(lái)將帶有指定鍵和值的元素添加到Hashtable中,其語(yǔ)法格式如下:public virtual void Add(Object key, Obgect value)代碼如下:Hashtable hashtable = new Hashtable();hashtable .Add(“1”, “what”);hashtable .Add(“2”, “why”);hashtable .Add(“3”, “how”);Console.WriteLine(hashtable .Count);Console.ReadLine();在Hasht
42、able中刪除元素時(shí),可以使用Hashtable類(lèi)提供的Clear方法和Remove方法。下面對(duì)這兩個(gè)方法進(jìn)行詳細(xì)介紹。第一章 C#基礎(chǔ) 【例1.28】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,其中實(shí)例化一個(gè)Hashtable對(duì)象,并使用Add方法為該Hashtable對(duì)象添加3個(gè)元素,然后使用Clear方法移除Hashtable中的所有元素。3.Hashtable元素的刪除 (1)Clear方法 該方法用來(lái)從Hashtable中移除所有元素,其語(yǔ)法格式如下: public virtual void Clear()代碼如下:Hashtable hashtable = new Hashtable();hashta
43、ble .Add(“1”, “what”);hashtable .Add(“2”, “why”);hashtable .Add(“3”, “how”);hashtable.Clear();Console.WriteLine(hashtable .Count);第一章 C#基礎(chǔ) 【例1.29】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,其中實(shí)例化一個(gè)Hashtable對(duì)象,并使用Add方法為該Hashtable對(duì)象添加3個(gè)元素,然后使用Remove方法移除Hashtable中鍵為3的元素。 (2)Remove方法 該方法用來(lái)從Hashtable中移除帶有指定鍵的元素,其語(yǔ)法格式如下: public virtual
44、void Remove(Object key)代碼如下:Hashtable hashtable = new Hashtable();hashtable .Add(“1”, “what”);hashtable .Add(“2”, “why”);hashtable .Add(“3”, “how”);hashtable.Remove(“3”);Console.WriteLine(hashtable .Count);Hashtable的遍歷與數(shù)組類(lèi)似,都可以使用foreach語(yǔ)句,這里需要注意的是,由于Hashtable中的元素是一個(gè)鍵/值對(duì),因此需要使用DictionaryEntry類(lèi)型來(lái)進(jìn)行遍歷。
45、DictionaryEntry類(lèi)型表示一個(gè)鍵/值對(duì)的集合。下面通過(guò)一個(gè)實(shí)例說(shuō)明如何遍歷Hashtable中的元素。第一章 C#基礎(chǔ) 【例1.30】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,其中實(shí)例化一個(gè)Hashtable對(duì)象,并使用Add方法為該Hashtable對(duì)象添加3個(gè)元素,然后使用foreach語(yǔ)句遍歷Hashtable中的各個(gè)鍵/值對(duì)并輸出。4.Hashtable的遍歷代碼如下:static void Main(string args)Hashtable hashtable = new Hashtable();hashtable .Add(“1”, “what”);hashtable .Add(“2”
46、, “why”);hashtable .Add(“3”, “how”);foreach(DictionaryEntry dicEntry in hashtable )Console.WriteLine(dicEntry.Key + “t” + dicEntry.Value );Console.ReadLine();在Hashtable中查找元素時(shí),可以使用Hashtable類(lèi)提供的Contains方法、ContainsKey方法和ContainsValue方法。下面對(duì)這3個(gè)方法進(jìn)行詳細(xì)介紹。第一章 C#基礎(chǔ) 【例1.31】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,其中實(shí)例化一個(gè)Hashtable對(duì)象,并使用Ad
47、d方法為該Hashtable對(duì)象添加3個(gè)元素,然后使用Contains方法判斷鍵1是否在Hashtable中。5.Hashtable元素的查找 (1)Contains方法 該方法用來(lái)確定Hashtable中是否包含特定鍵,其語(yǔ)法格式如下: public virtual bool Contains(Object key)代碼如下:Hashtable hashtable = new Hashtable();hashtable .Add(“1”, “what”);hashtable .Add(“2”, “why”);hashtable .Add(“3”, “how”);hashtable.Remov
48、e(“3”);Console.WriteLine(hashtable .Contains(“1”);說(shuō)明:ContainsKey方法和Contains方法實(shí)現(xiàn)的功能、語(yǔ)法都相同,這里不再詳細(xì)介紹。第一章 C#基礎(chǔ) 【例1.32】創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,其中實(shí)例化一個(gè)Hashtable對(duì)象,并使用Add方法為該Hashtable對(duì)象添加3個(gè)元素,然后使用ContainsValue方法判斷值1是否在Hashtable 中。 (2)ContainsValue方法 該方法用來(lái)確定Hashtable中是否包含特定值,其語(yǔ)法格式如下: public virtual bool ContainsValue(O
49、bject value)代碼如下:Hashtable hashtable = new Hashtable();hashtable .Add(“1”, “what”);hashtable .Add(“2”, “why”);hashtable .Add(“3”, “how”);hashtable.Remove(“3”);Console.WriteLine(hashtable .ContainsValue(“1”);C#程序是利用命名空間組織起來(lái)的。命名空間既用作程序的“內(nèi)部”組織系統(tǒng),也用做向“外部”公開(kāi)的組織系統(tǒng)(即一種向其他程序公開(kāi)自己擁有的程序元素的方法)。如果要調(diào)用某個(gè)命名空間中的類(lèi)或者方
50、法,首先需要使用using指令引入命名空間,using指令將命名空間名所標(biāo)識(shí)的命名空間內(nèi)的類(lèi)型成員導(dǎo)入當(dāng)前編譯單元中,從而可以直接使用每個(gè)被導(dǎo)入的類(lèi)型的標(biāo)識(shí)符,而不必加上它們的完全限定名。C#中的命名空間就好像是一個(gè)存儲(chǔ)了不同類(lèi)型的倉(cāng)庫(kù),而using指令就好比是一把鑰匙,命名空間的名稱就好比倉(cāng)庫(kù)的名稱,可以通過(guò)鑰匙打開(kāi)指定名稱的倉(cāng)庫(kù),從而在倉(cāng)庫(kù)中獲取所需的物品。第一章 C#基礎(chǔ)1.6命名空間using 指令的基本形式為:using 命名空間名;第一章 C#基礎(chǔ)【例1.33】創(chuàng)建一個(gè)控制臺(tái)程序,建立一個(gè)命名空間N1,在該命名空間中有一個(gè)類(lèi)A,在項(xiàng)目中使用using指令引入命名空間N1,然后在命名
51、空間Test中即可實(shí)例化命名空間N1中的類(lèi),最后調(diào)用該類(lèi)中的方法。代碼如下:using N1; /使用using指令引入命名空間N1namespace Testclass Programstatic void Main(string args) A a = new A(); /實(shí)例化N1中的類(lèi)Aa.Myls(); /調(diào)用類(lèi)A中的Myls方法 namespace N1 /建立命名空間N1 class A public void Myls()Console.WriteLine(“Hello World”); /輸出字符串Console.ReadLine();程序運(yùn)行結(jié)果為:Hello World1
52、.打印出110000范圍內(nèi)所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)3位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如,153是一個(gè)“水仙花數(shù)”,因?yàn)?。2.編寫(xiě)程序,分別利用for循環(huán)、while循環(huán)、do.while循環(huán),求出1100之間的所有奇數(shù)和及偶數(shù)和。3.編程求的值。4.設(shè)計(jì)一個(gè)Dog類(lèi),有名字、顏色、年齡等屬性,定義構(gòu)造方法來(lái)初始化類(lèi)的這些屬性,定義方法輸出Dog信息,編寫(xiě)應(yīng)用程序使用Dog類(lèi)。第一章 C#基礎(chǔ)1.7 習(xí)題5.建立兩個(gè)類(lèi):人類(lèi)(Person)和學(xué)生類(lèi)(Student),功能要求如下:(1)Person類(lèi)中包含4個(gè)私有的數(shù)據(jù)成員name、addr、sex、age,表示姓名
53、、地址、性別和年齡。用一個(gè)四參構(gòu)造方法、一個(gè)兩參構(gòu)造方法、一個(gè)無(wú)參構(gòu)造方法、一個(gè)輸出方法顯示4種屬性。(2)Student類(lèi)繼承Person類(lèi),并增加成員Math、English存放數(shù)學(xué)和英語(yǔ)成績(jī)。一個(gè)6參構(gòu)造方法、一個(gè)兩參構(gòu)造方法、一個(gè)無(wú)參構(gòu)造方法和重寫(xiě)輸出方法用于顯示這6種屬性。6.用兩種集合編寫(xiě)題目:分別輸入一個(gè)班級(jí)的學(xué)生姓名,語(yǔ)文分?jǐn)?shù),數(shù)學(xué)分?jǐn)?shù),英語(yǔ)分?jǐn)?shù)到集合,求語(yǔ)文總分、數(shù)學(xué)平均分、英語(yǔ)最高分以及英語(yǔ)最高分的學(xué)生姓名。第一章 C#基礎(chǔ)1.7 習(xí)題2019第二章 可視化設(shè)計(jì)基礎(chǔ)可視化基礎(chǔ)Form窗體多窗體的使用窗體的屬性、顯示、隱藏和事件窗臺(tái)的基本概念MDI窗體MDI窗體的設(shè)置多文檔界
54、面菜單項(xiàng)復(fù)選框和文本框菜單和菜單組件窗體界面的美化第二章 可視化設(shè)計(jì)基礎(chǔ)2.1 窗體的基本概念 Form窗體也稱為窗口,是.NET框架的智能客戶端技術(shù)。使用窗體可以顯示信息、請(qǐng)求用戶輸入及通過(guò)網(wǎng)絡(luò)與遠(yuǎn)程計(jì)算機(jī)通信,使用Visual Studio 可以輕松地創(chuàng)建Form窗體。第二章 可視化設(shè)計(jì)基礎(chǔ)2.1.1 Form窗體的概念 在Windows中,窗體是向用戶顯示信息的可視化界面,窗體是Windows應(yīng)用程序的基本單元。窗體都具有自己的特征,可以通過(guò)編程來(lái)設(shè)置。如果要編寫(xiě)窗體應(yīng)用程序,推薦使用Visual Studio。Visual Studio提供了一個(gè)圖形化的可視窗體設(shè)計(jì)器,可以實(shí)現(xiàn)所見(jiàn)即所
55、得的設(shè)計(jì)效果,可以快速開(kāi)發(fā)窗體應(yīng)用程序。2.1.2 添加和刪除窗體 添加或刪除窗體,首先要?jiǎng)?chuàng)建一個(gè)Windows應(yīng)用程序。如下圖所示為一個(gè)新創(chuàng)建的Windows應(yīng)用程序第二章 可視化設(shè)計(jì)基礎(chǔ) 如果要向項(xiàng)目中添加一個(gè)新窗體,可以在項(xiàng)目名稱NewForm上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“添加/Windows窗體”或者“添加/新建項(xiàng)”命令,如圖所示:第二章 可視化基礎(chǔ)添加和刪除窗體 選擇“新建項(xiàng)”或者“Windows窗體”命令都可以打開(kāi)“添加新項(xiàng)”對(duì)話框。 選擇“Windows窗體”選項(xiàng),輸入窗體名稱后,單擊“添加”按鈕,即可向項(xiàng)目中添加一個(gè)新的窗體。設(shè)置窗體的名稱時(shí),不要用關(guān)鍵字進(jìn)行設(shè)置。
56、刪除窗體的方法非常簡(jiǎn)單,只需在要?jiǎng)h除的窗體名稱上右擊,在彈出的快捷菜單中選擇“刪除”命令,如圖下圖所示,也可選中要?jiǎng)h除的窗體,按下鍵盤(pán)Delete鍵。2.1.3 多窗體的使用第二章 可視化設(shè)計(jì)基礎(chǔ) 一個(gè)完整的Windows應(yīng)用程序由多個(gè)窗體組成,此時(shí),就需要對(duì)多窗體設(shè)計(jì)有所了解。多窗體就是向項(xiàng)目中添加多個(gè)窗體,在這些窗體中實(shí)現(xiàn)不同的功能。下面講述多窗體的建立以及如何設(shè)置啟動(dòng)窗體。多窗體的建立 多窗體的建立是向某個(gè)項(xiàng)目中添加多個(gè)窗體。以上小節(jié)中的項(xiàng)目為例,向項(xiàng)目中添加3個(gè)窗體,添加多窗體后的項(xiàng)目如圖所示。實(shí)際項(xiàng)目中可添加任意多個(gè)窗體,但窗體不可重名。設(shè)置啟動(dòng)窗體 向項(xiàng)目中添加了多個(gè)窗體,如果要調(diào)
57、試程序,必須要設(shè)置先運(yùn)行的窗體,這樣就需要設(shè)置項(xiàng)目的啟動(dòng)窗體,項(xiàng)目的啟動(dòng)窗體是在Program.cs文件中設(shè)置的,在Program.cs文件中改變Run方法的參數(shù),即可實(shí)現(xiàn)設(shè)置啟動(dòng)窗體。比如項(xiàng)目的Form3窗體設(shè)置為項(xiàng)目的啟動(dòng)窗體,可以通過(guò)下面的代碼實(shí)現(xiàn)。第二章 可視化設(shè)計(jì)基礎(chǔ)static void Main()Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form3();2.1.4 窗體的屬性 窗體都包含一些基本的屬性,包括圖標(biāo)
58、、標(biāo)題、位置和背景等,這些屬性可以通過(guò)窗體的“屬性”面板進(jìn)行設(shè)置,也可以通過(guò)代碼實(shí)現(xiàn)。但是為了快速開(kāi)發(fā)窗體應(yīng)用程序,通常都是通過(guò)“屬性”面板進(jìn)行設(shè)置。第二章 可視化設(shè)計(jì)基礎(chǔ)1.更換窗體的圖標(biāo) 添加一個(gè)新的窗體后,窗體的圖標(biāo)是系統(tǒng)默認(rèn)的圖標(biāo)。如果想更換窗體的圖標(biāo),可以在“屬性”面板中設(shè)置窗體的Icon屬性。更換窗體圖標(biāo)過(guò)程操作如下:a.選中窗體,然后在窗體的“屬性”面板中選中Icon屬性,會(huì)出現(xiàn)按鈕,單擊更換圖標(biāo)。在添加窗體圖標(biāo)時(shí),其圖片格式只能是ico。b.單擊按鈕,打開(kāi)選擇圖標(biāo)文件的對(duì)話框。c.選擇新的窗體圖標(biāo)文件之后,單擊“打開(kāi)”按鈕,完成窗體圖標(biāo)的更換。更換后運(yùn)行結(jié)果如圖所示:第二章 可
59、視化設(shè)計(jì)基礎(chǔ)2.隱藏窗體的標(biāo)題欄 在某種情況下需要隱藏窗體的標(biāo)題欄,例如,軟件的加載窗體,大多數(shù)都采用無(wú)標(biāo)題欄的窗體。隱藏窗體的標(biāo)題欄,只需要將FormBorderStyle屬性設(shè)置為None即可。通過(guò)設(shè)置窗體的FormBorderStyle屬性的屬性值,即可實(shí)現(xiàn)隱藏窗體的標(biāo)題欄。FormBorderStyle屬性有7個(gè)屬性值,對(duì)應(yīng)說(shuō)明如下表所示。屬性值說(shuō)明Fixed3D固定的三維邊框FixedDialog固定的對(duì)話框樣式的粗邊框FixedSingle固定的單行邊框FixedToolWindow不可調(diào)整大小的工具窗口邊框None無(wú)邊框Sizable可調(diào)整大小的邊框SizableToolWino
60、dw可調(diào)整大小的工具窗口邊框第二章 可視化設(shè)計(jì)基礎(chǔ)3.設(shè)置窗體的顯示位置 可以通過(guò)窗體的StartPosition屬性,設(shè)置加載窗體時(shí)窗體在顯示器中的位置。StartPosition屬性有5個(gè)屬性值,其屬性值及說(shuō)明如表所示:屬性值說(shuō)明CenterParent窗體在其父窗體中居中CenterScreen窗體在當(dāng)前顯示窗體中居中,其尺寸在窗體大小中指定Manual窗體的位置由location屬性確定WindowsDefaultBounds窗體定位在Windows默認(rèn)位置,其邊界也由Windows默認(rèn)決定WindowsDefaultLocation窗體定位在Windows默認(rèn)位置,其尺寸在窗體大小中
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州財(cái)經(jīng)職業(yè)學(xué)院《視頻傳播實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽(yáng)職業(yè)技術(shù)學(xué)院《城鄉(xiāng)規(guī)劃管理與法規(guī)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025陜西建筑安全員-A證考試題庫(kù)附答案
- 2025遼寧建筑安全員-A證考試題庫(kù)附答案
- 2025浙江建筑安全員-C證(專(zhuān)職安全員)考試題庫(kù)
- 貴陽(yáng)康養(yǎng)職業(yè)大學(xué)《民俗與當(dāng)代社會(huì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025陜西省安全員A證考試題庫(kù)附答案
- 2025甘肅省安全員B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 廣州醫(yī)科大學(xué)《建筑給排水》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州現(xiàn)代信息工程職業(yè)技術(shù)學(xué)院《跨文化交際與面試技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 云上賞花直播方案
- 數(shù)控生涯發(fā)展展示
- 2024年太平洋人壽保險(xiǎn)股份有限公司招聘筆試參考題庫(kù)含答案解析
- 農(nóng)業(yè)裝備與機(jī)械化的經(jīng)濟(jì)效益與社會(huì)效益
- (完整)中醫(yī)癥候積分量表
- 醫(yī)療團(tuán)隊(duì)管理技巧與策略
- 《功能點(diǎn)計(jì)算方法》課件
- 工會(huì)提案培訓(xùn)課件
- 高空拋物法律知識(shí)講座
- 射頻工程師年終總結(jié)
- 2019統(tǒng)編版高中數(shù)學(xué)A版必修第二冊(cè)教學(xué)計(jì)劃含教學(xué)進(jìn)度表(高一下學(xué)期數(shù)學(xué)教學(xué)計(jì)劃)
評(píng)論
0/150
提交評(píng)論