




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章.NET框架簡(jiǎn)介學(xué)習(xí)目標(biāo)了解.NET框架概念了解CLR的概念和作用了解C#語(yǔ)言的特點(diǎn).NET概念.NET中代碼編譯過(guò)程.NET概念MSILVB.net編譯器VB.net代碼托管模式的中間語(yǔ)言C#編譯器C#代碼其它.net編譯器其它.net代碼CLR名稱公共運(yùn)行環(huán)境功能管理代碼、內(nèi)存和線程。CTS名稱公共類型系統(tǒng)CTS互操作優(yōu)點(diǎn)繼承用不同語(yǔ)言編寫的類創(chuàng)建用不同語(yǔ)言編寫的對(duì)象,及訪問(wèn)其方法將對(duì)象或引用作為參數(shù)傳遞給不同語(yǔ)言編寫的方法調(diào)試用不同語(yǔ)言編寫的應(yīng)用程序。在任何.NET語(yǔ)言中定義的類VC++.net應(yīng)用程序C#.net應(yīng)用程序VB.net應(yīng)用程序CLS名稱公共語(yǔ)言規(guī)范作用與CTS和MSIL密切合作,實(shí)現(xiàn)語(yǔ)言的互操作性。垃圾回收機(jī)制簡(jiǎn)介從內(nèi)存中刪除長(zhǎng)時(shí)間沒有引用的對(duì)象。原理當(dāng)內(nèi)存充滿時(shí)啟動(dòng),掃描整個(gè)堆,釋放沒有使用的內(nèi)存。類庫(kù)C#簡(jiǎn)介C#能開發(fā)的程序:ASP.net應(yīng)用程序Web服務(wù)類庫(kù)Windows應(yīng)用程序控制臺(tái)應(yīng)用程序C#特性C#是面向?qū)ο蟮木幊陶Z(yǔ)言,擁有以下特性:完全面向?qū)ο笾恢С謫卫^承OOP的3大原則封裝(Encapsulation)繼承(Inheritance)多態(tài)(Polymorphism)第一個(gè)應(yīng)用程序包含命名空間類名{
字段 方法 屬性 //以后學(xué)習(xí) 事件 //以后學(xué)習(xí)}usingSystem;classHelloWorld{static
stringsay="HelloWorld!";staticvoidMain(string[]args){ Console.WriteLine(say);}}Main方法Main注意大、小寫類型為static返回值為void或int參數(shù)為字符串?dāng)?shù)組應(yīng)用程序開始執(zhí)行的地方配置運(yùn)行環(huán)境配置運(yùn)行環(huán)境配置運(yùn)行環(huán)境從命令行帶參運(yùn)行…staticvoidMain(string[]args){…Console.WriteLine("參數(shù)為:{0}",args[i]);…}…異常try{
//可能有異常的代碼片段}//可以有多個(gè)catch語(yǔ)句塊catch(Exceptione){
//異常發(fā)生時(shí)執(zhí)行的代碼}finally{
//不論有無(wú)異常都要執(zhí)行}訪問(wèn)命名空間using
System;Console.WriteLine("HelloWorld!");等同于System.Console.WriteLine("HelloWorld!");總結(jié).NET的概念、組件。什么是MSIL、CLR。C#是OOP語(yǔ)言。C#程序結(jié)構(gòu)。C#特性。第2章C#基礎(chǔ)知識(shí)學(xué)習(xí)目標(biāo)了解值類型和引用類型理解Object類掌握String類及其方法、屬性。掌握類成員以及訪問(wèn)修飾符。23值類型和引用類型為什么要有值類型和引用類型?
.NET是一個(gè)完全對(duì)象化的系統(tǒng),但對(duì)象化往往導(dǎo)致執(zhí)行效率降低。為了解決這個(gè)問(wèn)題,CTS分別設(shè)計(jì)了值類型、引用類型。24值類型和引用類型值類型
byte、sbyte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、枚舉、結(jié)構(gòu)。引用類型
Object、String、數(shù)組。25值類型值類型的聲明。
inti=20;在內(nèi)存中分配。 分配在棧上。傳遞。 變量傳遞的是值。26結(jié)構(gòu)在棧上存放數(shù)據(jù)類型(值類型)的優(yōu)點(diǎn):比在堆上分配空間更快用完之后立即自動(dòng)釋放賦值方便(使用等號(hào))27枚舉枚舉類型的優(yōu)點(diǎn):更利于代碼維護(hù)代碼清晰方便鍵入(提示)28枚舉29enumSeason{Spring,Summer,Fall,Winter}StaticvoidMain(string[]args){…switch(answer){case"1":s=season.spring;break;…default:Console.WriteLine("請(qǐng)重新選擇。");…}…Console.WriteLine("現(xiàn)在的季節(jié)是:{0}",s);…}引用類型30引用類型的聲明。
strings="HelloStudent";在內(nèi)存中分配。 分配在堆上。傳遞。 變量傳遞的是對(duì)象的引用。Object類型是所有(包括用戶定義)類的基類。Equals方法對(duì)比對(duì)象的實(shí)例是否相等ToString方法(默認(rèn))獲得對(duì)象的名字31字符串方法功能Compare比較兩個(gè)字符串Format格式化字符串的值Trim刪除字符串中的空白ToUpper/ToLower改變字符串的大、小寫Split分解為小字符串IndexOf第一次出現(xiàn)指定字符的索引IndexOfAny第一次出現(xiàn)任意字符的索引Replace用另一個(gè)字符(串)替換Contains是否包含有指定的字符串初始化字符串
stringstr1="Hello";處理字符串32數(shù)組多維數(shù)組數(shù)據(jù)類型[,]數(shù)組名;交錯(cuò)數(shù)組(數(shù)組的數(shù)組)數(shù)據(jù)類型[][]數(shù)組名;33C#中的數(shù)組publicstaticvoidMain(){…for(inti;i<5;i++) { //輸入
…accountBalances[i]=Convert.ToDouble(Console.ReadLine());…for(inti;i<5;i++) //計(jì)算
accountBalances[i]+=accountBalances[i]*interestRate;...foreach(inttmpinaccountBalances) //輸出{Console.WriteLine("第{0}筆存款數(shù)為:{1}",count,tmp);…}34C#中的多維數(shù)組staticvoidMain(){…intarr=newint[2][]; //聲明
arr[0]=newint[5]{1,3,5,7,9}; //初始化arr[1]=newint[4]{2,4,6,8};accountBalances[i]+=accountBalances[i]*interestRate;...foreach(inttmpinaccountBalances) //輸出{Console.WriteLine("第{0}筆存款數(shù)為:{1}",count,tmp);…}35封箱和拆箱36值類型引用類型封箱示例代碼inti=10;objectobj=i; //隱式裝箱objectobj=object(i); //顯式裝箱封箱和拆箱37值類型引用類型拆箱示例代碼inti=10;objectobj=i;intj=(int)obj; //拆箱is運(yùn)算符38變量指定類型是否as運(yùn)算符39類型引用類型是否類成員類成員分為:數(shù)據(jù)成員函數(shù)成員classExam{
privateintcount;stringname;
intgetCnt(){…};voidshowNm(){…};}40數(shù)據(jù)成員數(shù)據(jù)成員分為:字段常量事件41函數(shù)成員函數(shù)成員有:屬性方法構(gòu)造函數(shù)析構(gòu)函數(shù)運(yùn)算符索引42訪問(wèn)修飾符publicprotectedinternalprotectedinternalprivate43總結(jié)值類型和引用類型封箱和拆箱is和as運(yùn)算符類成員和訪問(wèn)修飾符44第3章類和繼承學(xué)習(xí)目標(biāo)掌握類的定義掌握靜態(tài)方法的特點(diǎn)掌握方法的重載理解構(gòu)造函數(shù)掌握繼承定義類語(yǔ)法修飾符class類名{
類成員}publicclassChick{privateintleg;stringname;intcount(){…};voidcall(){…};}靜態(tài)數(shù)據(jù)privatestaticinti=0;靜態(tài)數(shù)據(jù)的特點(diǎn):使用關(guān)鍵字static屬于類程序運(yùn)行時(shí)已經(jīng)存在靜態(tài)方法staticintgetMin(){…}靜態(tài)方法的特點(diǎn):使用關(guān)鍵字static屬于類使用類名訪問(wèn)方法的重載重載: 名字相同,但參數(shù)的數(shù)量、類型不同的方法可以共存。在被調(diào)用時(shí),會(huì)根據(jù)參數(shù)的情況選擇運(yùn)行相應(yīng)的方法。Method(){…};Method(inti){…};Method(intj,strings){…};定義重載方法publicvoidRecordCall(TypeOfCallcallType,uintnMinutes){…}publicvoidRecordCall(TypeOfCallcallType,DateTimestartTime,DateTimeendTime){…}publicclassProgram{publicstaticvoidMain(){…DataTimesTime=newDateTime(2006,10,23,9,31,30);//2006-10-239:31:30DataTimeeTime=newDateTime(2006,10,23,10,10,20);//2006-10-2310:10:20…}}方法重載的要求函數(shù)名字必須相同參數(shù)的個(gè)數(shù)不同參數(shù)個(gè)數(shù)相同但類型不同和返回類型無(wú)關(guān)使用重載的場(chǎng)合
默認(rèn)的參數(shù)不同的輸入類型構(gòu)造函數(shù)構(gòu)造函數(shù):與類名相同,無(wú)返回類型的函數(shù)。實(shí)例化類時(shí)自動(dòng)被調(diào)用,使對(duì)象初始化。classmyClass{publicmyClass()//構(gòu)造函數(shù):與類名相同,無(wú)返回類型。
{…}}classCall{staticvoidMain(string[]args){myClassmcl=newmyClass(); //調(diào)用構(gòu)造函數(shù):在類實(shí)例化時(shí)自動(dòng)被調(diào)用
}}構(gòu)造函數(shù)的重載publicclassAuthentcator{…publicAuthentcator(){…}publicAuthentcator(stringinitPassword){…}…}classProgram{staticvoidMain(string[]args){AuthenticatornewUser1=newAuthenticator();
AuthenticatornewUser2=newAuthenticator("myPassword");}}從其它構(gòu)造函數(shù)調(diào)用構(gòu)造函數(shù)publicclassAuthentcator{…publicAuthentcator():this("Wish36"){…}publicAuthentcator(stringinitPassword){…}…}classProgram{staticvoidMain(string[]args){AuthenticatornewUser1=newAuthenticator();
AuthenticatornewUser2=newAuthenticator("myPassword");}}繼承什么是繼承?任何類A都可以繼承另一個(gè)類B(此時(shí)B叫A的父類或基類,A叫B的子類或派生類)。A繼承B意味著:A擁有B的所有成員A擁有自己獨(dú)特的成員繼承繼承的UML圖有繼承關(guān)系的類語(yǔ)法class
派生類名:基類名{ //代碼}示例:classChicken:Animal{ …}protected訪問(wèn)只允許派生類訪問(wèn)非子類不允許訪問(wèn)base關(guān)鍵字調(diào)用基類的構(gòu)造函數(shù)默認(rèn)調(diào)用無(wú)參數(shù)那個(gè)publicclassChicken:Animal{publicChicken(stringinitChickenName):base(initChickenName,0){…}}publicclassChicken:Animal{publicChicken(stringinitChickenName):base{…}}賦值類基類可以引用派生類Animalcow1=newCow();派生類不能引用基類Cowcow1=newAnimal();//錯(cuò)誤new方法publicclassChicken:Animal{…newpublicvoidEatFood(){…}}staticvoidMain(string[]args){Cowcow1=newCow("newCow",1,100);Chickenchicked1=newChicken("newChicked");Animala1=cow1;a1.EatFood();a1=chicked1;a1.EatFood();}sealed關(guān)鍵字防止類被繼承sealedclassCat{…}
//這個(gè)類不能被繼承防止方法被覆蓋sealedvoidMao(){…}
//這個(gè)方法不能被覆蓋總結(jié)定義類靜態(tài)的數(shù)據(jù)和方法構(gòu)造函數(shù)繼承第4章多態(tài)性學(xué)習(xí)目標(biāo)理解虛函數(shù)掌握面向?qū)ο蟮亩鄳B(tài)性理解抽象方法和抽象類掌握接口virtual方法什么是virtual方法?聲明一個(gè)可被覆蓋的基類方法在派生類中用override覆蓋該方法virtual方法使用virtual和override聲明方法的注意事項(xiàng):不能聲明為private方法兩個(gè)方法必須完全一致不能override非virtual方法必須使用override關(guān)鍵字override方法(隱式)是virtual方法virtual方法publicclassAnimal{…publicvirtualvoidEatFood(){Console.WriteLine("animal在吃食物");}…}publicclassCow:Animal{…publicoverridevoidEatFood(){Console.WriteLine("Cow在吃食物");}…}publicclassChicken:Animal{…publicoverridevoidEatFood(){Console.WriteLine("Chicken在吃食物");}…}classProgram{…staticvoidMain(string[]args){…Animalanimal1;animal1=cow1;animal1.EatFood();animal1=chicken1;animal1.EatFood();…}多態(tài)性的實(shí)現(xiàn)什么是多態(tài)性? 不同的對(duì)象調(diào)用了相同名稱的方法,可能引起不同的行為,叫做多態(tài)性。 多態(tài)性是面向?qū)ο缶幊痰幕咎匦灾?。多態(tài)性的實(shí)現(xiàn)publicclassAnimal{…publicvirtualvoidEatFood(){Console.WriteLine("animal在吃食物");}…}publicclassCow:Animal{…publicoverridevoidEatFood(){Console.WriteLine("Cow{0}在吃食物");}…}publicclassChicken:Animal{…publicoverridevoidEatFood(){Console.WriteLine("Chicken{0}在吃食物");}…}classProgram{…staticvoidMain(string[]args){…for(inti=0;i<5;i++){if(i%2==0)animals[i]=newChicken(i.ToString(),1);elseanimals[i]=newCow(j.ToString(),1);}foreach(Animaltmpinanimals)tmp.EatFood();…}抽象類什么是抽象方法、抽象類?抽象方法允許設(shè)計(jì)一個(gè)類而把部分或所有的代碼實(shí)現(xiàn)留給子類去完成。抽象方法必須用關(guān)鍵字abstract聲明。包含有抽象方法的類必須是抽象類。抽象類必須用關(guān)鍵字abstract聲明。抽象類抽象方法抽象方法不能再使用virtual關(guān)鍵字abstractpublicvoidEatFood{…}抽象類抽象類不能被實(shí)例化abstractpublicclassAnimal{…}Animalani=newAnimal();//錯(cuò)誤抽象類abstractpublicclassAnimal{…abstractpublicvoidEatFood();…}publicclassCow:Animal{…publicoverridevoidEatFood(){…}…}publicclassChicken:Animal{…publicoverridevoidEatFood(){…}…}classProgram{staticvoidMain(string[]args){…inti;for(i=0;i<CowCount;i++) {animal[i]=newCow(i.ToString(),1);}intj;for(j=i;j<CowCount+ChickenCount;j++) {animal[j]=newChicken(j.ToString(),1);}foreach(Animaltmpinanimals)tmp.EatFood();}}抽象類接口描述一組相關(guān)行為不關(guān)心具體實(shí)現(xiàn)只指出方法的名稱、返回類型和參數(shù)接口語(yǔ)法使用關(guān)鍵字interface接口中的方法不能加訪問(wèn)修飾符接口中方法的主體替換成分號(hào)interfaceIComparable{intCompareTo(objectobj);}接口語(yǔ)法定義接口的限制:由屬性、方法、事件、索引器組成接口不能包含字段接口成員是公共的繼承接口就必須實(shí)現(xiàn)其所有成員不能直接實(shí)例化接口接口不包含方法的實(shí)現(xiàn)類或結(jié)構(gòu)可以繼承多個(gè)接口接口可以繼承多個(gè)接口實(shí)現(xiàn)接口實(shí)現(xiàn)接口遵循的原則:方法和返回類型完全匹配。任何參數(shù)完全匹配。使用接口作為方法名的前綴。假如使用顯式接口實(shí)現(xiàn),方法不應(yīng)該有一個(gè)訪問(wèn)修飾符。實(shí)現(xiàn)接口的UML圖實(shí)現(xiàn)接口UML圖的代碼interfaceIAnimalBehavior{…}publicclassCow:Animal,IAnimalBehavior{…}classProgram{staticvoidMain(string[]args){…inti;for(i=0;i<CowCount;i++) {animal[i]=newCow(i.ToString(),1);}intj;for(j=i;j<CowCount+ChickenCount;j++) {animal[j]=newChicken(j.ToString(),1);}foreach(Animaltmpinanimals){FarmWork(tmp);}}}使用多個(gè)接口的UML圖使用多個(gè)接口UML圖的代碼interfaceIMovable{…}interfaceIBehavior{…}interfaceIAnimalBehavior:IBehavior{…}…publicclassCow:Animal,IAnimalBehavior,IMovable{…}classProgram{staticvoidMain(string[]args){…inti;Cowcow;for(i=0;i<CowCount;i++) {cow=newCow(i.ToString(),1);…animals[i]=cow;}intj;for(j=i;j<CowCount+ChickenCount;j++){animals[j]=newChicken(j.ToString(),1);}foreach(Animaltmpinanimals){FarmWork(tmp);}}}總結(jié)virtual方法多態(tài)性的實(shí)現(xiàn)抽象類接口第5章屬性和索引學(xué)習(xí)目標(biāo)掌握屬性的概念掌握set訪問(wèn)和get訪問(wèn)器的編寫理解索引器的作用和使用方法屬性有效地封裝數(shù)據(jù)。方便地操作數(shù)據(jù)。聲明屬性屬性的定義。語(yǔ)法。訪問(wèn)修飾符返回類型屬性名{get{ //取值代碼
return屬性值}set{ //賦值代碼}}publicstringName{get{returnname;}set{name=value;}}屬性的使用賦值類實(shí)例.屬性=值;
//賦值animal1.Age=2;屬性的使用取值Console.WriteLine(類實(shí)例.屬性);
//取值Console.WriteLine(animal1.Age);只讀和只寫屬性只讀屬性:只有g(shù)et訪問(wèn)器的屬性。publicstringName{get{returnname;}}只讀和只寫屬性只寫屬性:只有set訪問(wèn)器的屬性。publicstringName{set{name=value;}}屬性的可訪問(wèn)性get和set訪問(wèn)器的限制可以不同。get和set訪問(wèn)器不能都為private。屬性的訪問(wèn)限制應(yīng)該大于訪問(wèn)器。接口的屬性interfaceIBehavior{ voidEatFood(); stringName { get; set; }}合理使用屬性將重點(diǎn)集中在對(duì)象的行為上。不要直接用set訪問(wèn)屬性。//不好的設(shè)計(jì)classBankAccount{privatemoneybalance;publicmoneyBalance{get{returnbalance;}set{balance=value;}}}//有效修改后classBankAccount{privatemoneybalance;publicmoneyBalance{get{returnbalance;}}publicvoidDeposit(moneyamount){this.balance+=amount;}publicboolWithdraw(moneyamount){this.balance-=amount;}}索引器采取自然、熟悉的語(yǔ)法訪問(wèn)包含多個(gè)值的項(xiàng)目。提供了類似數(shù)組的訪問(wèn)方式,功能又遠(yuǎn)遠(yuǎn)多于數(shù)組。概念和屬性相似,也通過(guò)get、set訪問(wèn)器實(shí)現(xiàn)。索引器語(yǔ)法。訪問(wèn)修飾符返回類型this[索引列表]{ get{return;} set{}}索引器使用索引器時(shí)要注意的問(wèn)題。索引器不是一個(gè)方法索引器總是獲取單個(gè)參數(shù)使用this取代方法名包含get和set訪問(wèn)器參數(shù)以調(diào)用時(shí)的索引值填充索引器重載…publicintthis[intindex]{…}publicintthis[stringindexName]{…}…staticvoidMain(string[]args){…Console.WriteLine("Texas出生人數(shù){0}",birthsListUSA["Texas"]);
Console.WriteLine("總?cè)藬?shù):{0},平均人數(shù){1}",birthsListUSA.TotalBirths,birthsListUSA.TotalBirths.Average);…}索引器重載索引器和數(shù)組的區(qū)別索引器可以使用非數(shù)值下標(biāo)。索引器可以重載。索引器不可以作為ref或者out參數(shù)使用。聲明接口的索引器interfaceIRawInt{ boolthis[intindex]{get;set;}}聲明接口的索引器classRawInt:IRawInt{ … publicboolthis[intindex] { get{…} set{…} } …}總結(jié)屬性訪問(wèn)屬性屬性的可訪問(wèn)性索引器索引器的重載第6章委托和事件學(xué)習(xí)目標(biāo)理解委托的概念掌握委托的作用掌握事件的概念和作用委托委托有什么用處?定義一個(gè)委托能運(yùn)行不同的方法。委托聲明委托
publicdelegatedoubleCalculation(intx,inty);聲明和使用委托聲明委托要使用delegate關(guān)鍵字。還要指定返回類型、委托的名稱以及所有參數(shù)。聲明和使用委托示例代碼…publicdelegatedoubleCalculation(intx,inty);…staticvoidMain(string[]args){…CalculationmyCalculation=newCalculation(myMath.Average);…CalculationmyCalculation=newCalculation(Calculator.Sum);}聲明和使用委托運(yùn)行結(jié)果委托的優(yōu)點(diǎn)擴(kuò)展性、靈活性委托使代碼低耦合,不必重復(fù)寫。委托的優(yōu)點(diǎn)能引用多個(gè)方法只要用+=操作符將它們添加到委托中。委托的優(yōu)點(diǎn)示例代碼…publicvoidStopFolding(){Console.WriteLine("折疊和切割機(jī)關(guān)閉");}publicvoidFinishWelding(){Console.WriteLine("焊接機(jī)關(guān)閉");}publicvoidPaintOff(){Console.WriteLine("彩印機(jī)關(guān)閉");}…publicController(){this.stopMachinery+=folder.StopFolding;
this.stopMachinery+=welder.FinishWelding;
this.stopMachinery+=painter.PaintOff;}…委托的優(yōu)點(diǎn)運(yùn)行結(jié)果事件事件的概念是什么? 事件是通過(guò)委托實(shí)現(xiàn)的。.NET中事件的定義。 事件提供了一種運(yùn)行時(shí)調(diào)用委托的方式。聲明事件語(yǔ)法訪問(wèn)修飾符event調(diào)用的委托名事件名;訂閱事件語(yǔ)法實(shí)例名.事件名+=實(shí)例名.方法名;使用+=操作符,與把方法加入委托相同。取消訂閱事件語(yǔ)法實(shí)例名.事件名-=實(shí)例名.方法名;使用-=操作符。引發(fā)事件語(yǔ)法if(this.事件名!=null){ this.事件名();}引發(fā)事件示例代碼…publicdelegatevoidStopMachineryDelegate();publiceventStopMachineryDelegateMachineOverheating;…staticvoidMain(string[]args){…tempMonitor.MachineOverheating+=folder.StopFolding;
tempMonitor.MachineOverheating+=welder.FinishWelding;
tempMonitor.MachineOverheating+=painter.PaintOff;}…引發(fā)事件運(yùn)行結(jié)果理解GUI事件單擊按鈕連接方法引發(fā)事件創(chuàng)建委托總結(jié)聲明委托添加方法到委托事件的定義訂閱、取消事件GUI事件第7章異常、IO學(xué)習(xí)目標(biāo)掌握異常的概念掌握try、catch和finally的編寫法了解流的概念了解如何創(chuàng)建文件了解如何對(duì)文件讀、寫異常實(shí)現(xiàn)主邏輯代碼與錯(cuò)誤處理代碼分離。從System.Exception繼承而來(lái)。常見的有除零異常、越界異常、空引用異常。異常處理模型try塊 放置產(chǎn)生異常的代碼catch塊 放置處理異常的代碼異常類支持的功能描述錯(cuò)誤的可讀文本。 錯(cuò)誤的性質(zhì)及建議操作保存在Message屬性中。發(fā)生異常時(shí)調(diào)用堆棧的狀態(tài)。 錯(cuò)誤發(fā)生位置的堆棧跟蹤保存在StackTrace屬性中。Exception類Exception基類下的兩種異常從SystemException派生的預(yù)定義公共語(yǔ)言運(yùn)行庫(kù)異常類。從ApplicationException派生的用戶定義的應(yīng)用程序異常類。try、catch和finally處理異常代碼的執(zhí)行過(guò)程首先執(zhí)行try塊。若沒有異常,則執(zhí)行finally塊,程序正常終止;若有異常,則判斷catch語(yǔ)句中是否有該類異常。catch語(yǔ)句若沒有捕獲該異常,則程序異常終止;catch語(yǔ)句若捕獲到該異常,則執(zhí)行catch塊。執(zhí)行finally塊,程序正常終止。try、catch和finally一個(gè)try塊可以:有一個(gè)或多個(gè)相關(guān)的catch塊,無(wú)finally塊。有一個(gè)finally塊,無(wú)catch塊。包含一個(gè)或多個(gè)catch塊,同時(shí)有finally塊。未處理的異常當(dāng)try塊發(fā)現(xiàn)了異常而沒相應(yīng)的catch塊處理,會(huì)發(fā)生什么?調(diào)試時(shí)未處理的異常當(dāng)try塊發(fā)現(xiàn)了異常而沒相應(yīng)的catch塊處理,會(huì)發(fā)生什么?運(yùn)行時(shí)使用多個(gè)catchtry{…}catch(FormatExceptionfEx){…}catch(OverflowExceptionoEx){…}catch(InvalidOperationExceptionioEx){…}catch(Exceptionex){…}//最后用異常的基類,確保不在上述范圍內(nèi)的異常都被抓取捕捉多個(gè)異常try{…}catch(Exceptionex){…}//直接用異常的基類,無(wú)須確定具體的異常類型,統(tǒng)統(tǒng)抓取finally塊finally塊中的代碼總是被運(yùn)行。TextReaderreader=null;try{reader=src.OpenText();stringline;while((line=reader.ReadLine())!=null){source.Text+=line+"\n";}}finally{if(reader!=null){reader.Close();}}throwthrow用于手動(dòng)拋出異常。語(yǔ)法:
thrownewSystem.Exception();只能拋出System.Exception類或其子類。自定義異常當(dāng)需要額外的功能時(shí),可以自定義異常。繼承自System.ApplicationException。示例介紹輸入錯(cuò)誤時(shí)的運(yùn)行界面示例代碼…try{…}catch(FormatExceptionfEx){…}catch(OverflowExceptionoEx){…}catch(InvalidOperationExceptionioEx){…}catch(Exceptionex){…}…IO流的概念。輸入、輸出基礎(chǔ)類。IOFile和Directory類FileInfo和DirectoryInfo類FileStream…FileStreamoutStream=null;try{FileInfobytesFile=newFileInfo(@"C:\temp\numbers1.dat");outStream=bytesFile.OpenWrite();for(bytei=0;i<10;i++){outStream.WriteByte(i);}…FileStreaminStream=null;try{FileInfobytesFile=newFileInfo(@"C:\temp\numbers1.dat");inStream=bytesFile.OpenRead();…for(inti=0;i<inStream.Length;i++){temp=inStream.ReadByte();Console.WriteLine(temp);totalSum+=temp;}…StreamWriter…try{ FileStreamaFile=newFileStream(@"C:\Log.txt", FileMode.OpenOrCreate); StreamWritersw=newStreamWriter(aFile); sw.WriteLine("Hellotoyou."); sw.WriteLine("Itisnow{0}andthingsarelookinggood.", DateTime.Now.ToLongDateString()); sw.WriteLine("Morethanthat,"); sw.WriteLine("It’s{0}thatyouarelearning","C#"); sw.Close();}…StreamReader…try{ FileStreamaFile=newFileStream(@"C:\Log.txt",FileMode.Open); StreamReadersr=newStreamReader(aFile); strLine=sr.ReadLine(); while(strLine!=null) { Console.WriteLine(strLine); strLine=sr.ReadLine(); } sr.Close();}…總結(jié)異常的概念。Exception類。try…catch…finally的編寫及運(yùn)行過(guò)程。手動(dòng)拋出異常和自定義異常。流、IO的概念。常用IO類及其作用。第8章命名空間、程序集以及新特性學(xué)習(xí)目標(biāo)理解命名空間的概念和語(yǔ)法理解命名空間的作用了解程序集的作用了解partial的作用了解泛型的作用命名空間為什么要有命名空間?
較大型的軟件項(xiàng)目中,眾多的類需要管理,以明確它們的作用范圍。 命名空間提供了一種邏輯上組織相關(guān)類和其他類型的方式。命名空間命名空間是層次結(jié)構(gòu)的,用"."分隔例如:XTGJ.ELITEXTGJELITE自定義命名空間定義命名空間。namespace命名空間名稱{ class包含的類1{類成員}
… class包含的類n{類成員}}完全限定名訪問(wèn)命名空間的完全限定名訪問(wèn)。System.Elevator.Personp=newSystem.Elevator.Person();等同于usingSystem.Elevator;Personp;p=newPerson();嵌套命名空間語(yǔ)法namespace空間1{
namespace空間2 {
namespace空間3 {
… }
}}嵌套命名空間不同命名空間中可以有相同名稱的類namespace空間1{
class類1{…}}namespace空間2{
class類1{…}}程序集什么是程序集?程序集是任何.NETFramework應(yīng)用程序的基本構(gòu)造塊。程序集程序集的特點(diǎn)作為.exe或.dll實(shí)現(xiàn)可由多個(gè)應(yīng)用共享必須強(qiáng)命名需要時(shí)加載程序集創(chuàng)建一個(gè)C#程序集的最簡(jiǎn)單方法用文本編輯器寫代碼保存為.cs文件以csc命令編譯.cs文件成.exe執(zhí)行.exe文件多個(gè)程序集生成一個(gè)dll程序集csc/out:Person.dll/t:libraryPerson.cscsc命令的參數(shù)/out:/t:library多個(gè)程序集生成一個(gè)引用dll的exe程序集csc/out:Simulation.exe/r:Person.dllSimulation.cscsc命令的參數(shù)/out:/r:partial語(yǔ)法訪問(wèn)限定符partial類型類型名稱{代碼}publicpartialclassPart{ inti; publicintmethi()}publicpartialclassPart{ strings; publicstringmeths()}publicclassPart{ inti; strings; publicintmethi(); publicstringmeths();}使用partial的場(chǎng)合處理代碼量龐大的項(xiàng)目時(shí)使用自動(dòng)生成的源代碼時(shí)泛型泛型的定義允許類、結(jié)構(gòu)、接口、委托和方法通過(guò)它們所存貯和操作的數(shù)據(jù)的類型來(lái)參數(shù)化。泛型的作用不必?fù)?dān)心類型轉(zhuǎn)換錯(cuò)誤,不會(huì)增加執(zhí)行負(fù)擔(dān)。建立和使用泛型建立泛型publicclassStack<T>{ T[]items; intcount; publicvoidPush(Titem){…} publicTPop(){…}}建立和使用泛型使用泛型要指定實(shí)際的具體類型來(lái)替代TStack<int>stack=newStack<int>();總結(jié)命名空間的定義及其組織形式程序集的定義及其特點(diǎn)怎樣生成dll和引用dll的exe程序集partial的定義及其使用場(chǎng)合泛型的建立和使用。第9章集合類框架學(xué)習(xí)目標(biāo)了解集合類的概念掌握ArrayList類的作用和特性掌握Queue和Stack的作用和特性理解HashTable和SortedList的用法集合類C#中的集合是什么?是一種允許跟蹤大量對(duì)象的多重對(duì)象容器。常用的集合類有哪些?ArrayList、Queue、Stack、Hashtable、SortedList集合類比較原始數(shù)據(jù)(值)類型和對(duì)象(引用類型)數(shù)組集合類集合類中添加、刪除一個(gè)對(duì)象,會(huì)自動(dòng)進(jìn)行裝箱、拆箱操作ArrayList類ArrayList的屬性屬性描述Capacity獲取或設(shè)置ArrayList可包含的元素?cái)?shù)。Count獲取ArrayList中實(shí)際包含的元素?cái)?shù)。Item獲取或設(shè)置指定索引處的元素,通過(guò)[]索引實(shí)現(xiàn)ArrayList類ArrayList的方法方法描述Add將對(duì)象添加到ArrayList對(duì)象的結(jié)尾處Clear從ArrayList對(duì)象中移除所有元素Contains確定某元素是否在ArrayList對(duì)象中GetEnumerator返回循環(huán)訪問(wèn)ArrayList對(duì)象的枚舉數(shù)IndexOf返回ArrayList對(duì)象或它的一部分從零開始的匹配索引Insert將元素插入ArrayList對(duì)象的指定索引處Remove從ArrayList對(duì)象中移除第一個(gè)匹配項(xiàng)RemoveAt移除ArrayList對(duì)象指定索引處的元素Reverse將ArrayList對(duì)象中的元素的順序進(jìn)行反轉(zhuǎn)Sort對(duì)ArrayList對(duì)象中的元素進(jìn)行排序ToArray將ArrayList對(duì)象中的元素復(fù)制到新數(shù)組中ArrayList類ArrayList相對(duì)數(shù)組最大的優(yōu)勢(shì)是可以根據(jù)需要改變自身的大小?!瑼rrayListnumbers=newArrayList();…foreach(intnumberinnewint[]{10,9,8,7,6,5,4,3,2,1}){numbers.Add(number);}…numbers.Add(12);numbers.Insert(3,11);…numbers.Remove(7);numbers.RemoveAt(6);…numbers.Sort();…numbers.Reverse();…if(numbers.Contains(tmp)…ArrayList類運(yùn)行結(jié)果。Queue類Queue類的方法方法描述Clear從Queue中移除所有對(duì)象Dequeue移除并返回位于Queue開始處的對(duì)象Enqueue將對(duì)象添加到Queue的結(jié)尾處Peek返回位于Queue開始處的對(duì)象但不將其移除Queue類Queue(隊(duì)列)實(shí)現(xiàn)了一個(gè)先入先出(FIFO)的機(jī)制。…foreach(intnumberinnewint[4]{9,3,7,2}){numbers.Enqueue(number);Console.WriteLine(number+"hasjoinedthequeue");}…while(numbers.Count!=0){intnumber=(int)numbers.Dequeue();Console.WriteLine(number+"hasleftthequeue");}…Queue類運(yùn)行結(jié)果。Stack類Stack類的方法方法描述Clear從Stack中移除所有對(duì)象Peek返回位于Stack頂部的對(duì)象但不將其移除Pop移除并返回位于Stack頂部的對(duì)象Push將對(duì)象插入Stack的頂部Stack類Stack(堆棧)實(shí)現(xiàn)了一個(gè)后入先出(LIFO)的機(jī)制?!璮oreach(intnumberinnewint[4]{9,3,7,2}){numbers.Push(number);Console.WriteLine(number+"hasbeenpushedonthestack");}…while(numbers.Count!=0){intnumber=(int)numbers.Pop();Console.WriteLine(number+"hasbeenpoppedofthestack");}…Stack類運(yùn)行結(jié)果。Hashtable類Hashtable實(shí)現(xiàn)了一對(duì)key/value相應(yīng)的object數(shù)組?!璈ashtableages=newHashtable();ages["John"]=41;ages["Diana"]=42;ages["James"]=13;ages["Francesca"]=11;foreach(DictionaryEntryelementsinages){stringname=(string)element.Key;intage=(int)element.Value;Console.WriteLine("Name:{0},Age:{1}",name,age);}…Hashtable類運(yùn)行結(jié)果。SortedList類與Hashtable類似,主要的不同是key數(shù)組總是排好序的。…SortedListages=newSortedList();ages["John"]=39;ages["Diana"]=40;ages["James"]=12;ages["Francesca"]=10;foreach(DictionaryEntryelementsinages){stringname=(string)element.Key;intage=(int)element.Value;Console.WriteLine("Name:{0},Age:{1}",name,age);}…SortedList類運(yùn)行結(jié)果。比較數(shù)組和集合集合不必聲明元素類型,因?yàn)榇鎯?chǔ)的是object。集合可以根據(jù)需要?jiǎng)討B(tài)改變大小。集合可以只讀使用??偨Y(jié)集合的定義ArrayList的概念、方法Queue的概念、方法Stack的概念、方法Hashtable的用法SortedList的用法第10章棧、隊(duì)列和鏈表學(xué)習(xí)目標(biāo)理解棧的代碼實(shí)現(xiàn)理解隊(duì)列的代碼實(shí)現(xiàn)了解鏈表的概念棧棧的定義什么是top、bottom示意圖進(jìn)棧、出棧進(jìn)棧操作出棧操作123進(jìn)棧123出棧new方法和Push方法new方法定義一個(gè)新的空棧。Push方法向棧中推入一個(gè)元素,若棧已滿則返回一個(gè)錯(cuò)誤。Pop方法和Peek方法Pop方法從棧頂移除一個(gè)元素(也可得到該元素的引用),若棧已空則不能操作。Peek方法從棧中取得一個(gè)元素的值,并不移除該元素。實(shí)現(xiàn)Stack…staticvoidMain(string[]args){…theStack.push(20);
//pushitemsontostacktheStack.push(40);theStack.push(60);theStack.push(80);while(!theStack.isEmpty())
//untilit'sempty
…隊(duì)列隊(duì)列的定義什么是rear、front示意圖入列、出列入列操作出列操作123入列123出列Insert方法和Remove方法Insert方法在隊(duì)列末添加一個(gè)元素(可多次調(diào)用)。Remove方法從隊(duì)列頭移除一個(gè)元素。Peek方法和new方法Peek方法找到隊(duì)列的第一個(gè)元素(但不進(jìn)行任何操作)。new方法創(chuàng)建一個(gè)新的空隊(duì)列。isEmpty和isFullisEmpty方法判斷隊(duì)列是否空。isFull方法判斷隊(duì)列是否滿。C#代碼實(shí)行Queue…staticvoidMain(string[]args){…theQueue.insert(10);//insert4itemstheQueue.insert(20);theQueue.insert(30);theQueue.insert(40);theQueue.remove();//remove3itemstheQueue.remove();//(10,20,30)theQueue.remove();…鏈表示意圖語(yǔ)法classLink{publicintiData; //數(shù)據(jù)
publicdoubledData; //數(shù)據(jù)項(xiàng)
publicLinknext; //指向下個(gè)鏈表}相關(guān)名詞節(jié)點(diǎn)、頭指針、域……鏈表的創(chuàng)建對(duì)于前面的鏈表,節(jié)點(diǎn)的定義如下(假設(shè)info的類型為int):
publicclassLinkedListNode
{
publicintinfo;publicLinkedListNodelink;
}
鏈表的基本屬性復(fù)制頭節(jié)點(diǎn)復(fù)制當(dāng)前節(jié)點(diǎn)(遍歷)構(gòu)建鏈表鏈表的遍歷如下代碼可實(shí)現(xiàn)鏈表的遍歷
current=head; while(current!=null) { current=current.link; }
鏈表元素的插入鏈表元素的刪除總結(jié)棧、top、bottom的定義進(jìn)棧、出棧操作棧的常用方法及實(shí)現(xiàn)隊(duì)列、front、rear的定義入列、出列操作隊(duì)列的常用方法及實(shí)現(xiàn)鏈表及其相關(guān)概念節(jié)點(diǎn)的操作第一章CRM系統(tǒng)需求分析教學(xué)目標(biāo)了解系統(tǒng)開發(fā)的設(shè)計(jì)方案理解項(xiàng)目的系統(tǒng)功能描述系統(tǒng)分析
CRM系統(tǒng)的功能由于操作人員的計(jì)算機(jī)知識(shí)有限,因此要求系統(tǒng)具有良好的人機(jī)界面如果系統(tǒng)的使用對(duì)象較多,則要求有較好的權(quán)限管理方便的數(shù)據(jù)查詢功能方便的添加和修改數(shù)據(jù)功能在相應(yīng)的權(quán)限下,可方便的刪除數(shù)據(jù)自動(dòng)記錄電話銷售跟蹤情況方便的實(shí)現(xiàn)員工的績(jī)效考核數(shù)據(jù)計(jì)算自動(dòng)完成,盡量減少人工干預(yù)完善的數(shù)據(jù)備份、還原和清理功能系統(tǒng)分析
用例圖總體設(shè)計(jì)系統(tǒng)架構(gòu)總體設(shè)計(jì)開發(fā)工具數(shù)據(jù)庫(kù)采用MicrosoftSQLServer2008Microsoft公司的VisualStudio2012編碼規(guī)范數(shù)據(jù)庫(kù)命名規(guī)范數(shù)據(jù)庫(kù)命名以相關(guān)英文單詞或縮寫,例XtCRM數(shù)據(jù)表以相關(guān)英文單詞或縮寫或詞組,例UserInfo字段一般采用英文單詞或詞組命名,如找不到專業(yè)的英文單詞或詞組,可以使用相同意義的英文單詞或詞組代替,例userID控件命名規(guī)則控件名稱一般為表示該控件作用的英文單詞的縮寫,出現(xiàn)沖突時(shí)可采用不同的簡(jiǎn)寫規(guī)則。另外,在編碼過(guò)程中不涉及編碼的控件,可以取默認(rèn)名稱。例txtUserName數(shù)據(jù)庫(kù)設(shè)計(jì)方案數(shù)據(jù)表表UserInfo用于保存本系統(tǒng)用戶的基本信息表CustomInfo用于保存企業(yè)客戶的詳細(xì)資料表CustomBSview用于保存客戶每次購(gòu)買產(chǎn)品的詳細(xì)資料表CustomOrder用于保存客戶購(gòu)買商品所生成訂單的詳細(xì)資料表MemberInfo用于保存會(huì)員卡信息的詳細(xì)資料表combo_customType用于保存客戶類型的基本信息表CorpInfo用于保存企業(yè)的基本信息數(shù)據(jù)庫(kù)設(shè)計(jì)方案數(shù)據(jù)表表DeptInfo用于保存企業(yè)部門的詳細(xì)信息表EmpInfo用于保存企業(yè)內(nèi)部員工的詳細(xì)信息表EmpEaluate用于保存員工績(jī)效考核的詳細(xì)信息表ProductType用于保存產(chǎn)品類別的詳細(xì)信息表ProductGroup用于保存產(chǎn)品分組的詳細(xì)信息表ProductMessage用于保存產(chǎn)品的詳細(xì)信息表ProductPromotion用于保存產(chǎn)品促銷的詳細(xì)信息
系統(tǒng)功能模塊描述登錄系統(tǒng)功能模塊描述主窗體系統(tǒng)功能模塊描述客戶管理系統(tǒng)功能模塊描述客戶信息系統(tǒng)功能模塊描述客戶會(huì)員信息系統(tǒng)功能模塊描述人事管理系統(tǒng)功能模塊描述員工信息系統(tǒng)功能模塊描述員工信息系統(tǒng)功能模塊描述產(chǎn)品管理系統(tǒng)功能模塊描述促銷方案系統(tǒng)功能模塊描述客戶類型設(shè)置總結(jié)項(xiàng)目的需求分析數(shù)據(jù)庫(kù)的設(shè)計(jì)方案229多文檔程序設(shè)計(jì)第二章230教學(xué)目標(biāo)理解文檔視圖結(jié)構(gòu)處理的方式掌握.NET下MDI程序的設(shè)計(jì)
特點(diǎn):文檔是一種數(shù)據(jù)源視圖是數(shù)據(jù)的用戶窗口表現(xiàn)層和處理分離231文檔/視圖結(jié)構(gòu)232文檔/視圖結(jié)構(gòu)SalesGridViewSalesOtherViewSalesDocumentSalesChartViewSalesTrendView……一般來(lái)說(shuō),我們可以創(chuàng)建一個(gè)document類來(lái)管理我們需要處理的數(shù)據(jù),然后創(chuàng)建若干個(gè)view類來(lái)以不同的方式展示這些數(shù)據(jù)
有兩種基于文檔視圖結(jié)構(gòu)程序的程序:?jiǎn)挝臋n(SDI)多文檔(MDI)233文檔/視圖結(jié)構(gòu)文檔/視圖結(jié)構(gòu)程序并不等同于一般所說(shuō)的多文檔程序文檔/視圖結(jié)構(gòu)指出了一種數(shù)據(jù)和顯示處理分離的處理模型多文檔程序僅僅是程序中能同時(shí)顯示和處理多個(gè)界面基于文檔視圖結(jié)構(gòu)的單文檔界面(SDI)應(yīng)用程序:用戶在同一時(shí)刻只能操作一個(gè)文檔234文檔/視圖結(jié)構(gòu)基于文檔視圖結(jié)構(gòu)的多文檔界面(MDI)應(yīng)用程序:允許同時(shí)操作多個(gè)文檔235文檔/視圖結(jié)構(gòu)
文檔/視圖結(jié)構(gòu)的優(yōu)點(diǎn):簡(jiǎn)化了設(shè)計(jì)開發(fā)過(guò)程。模塊劃分更合理、獨(dú)立性更強(qiáng):將數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶界面分離。便于系統(tǒng)的擴(kuò)展和重構(gòu)。
236文檔/視圖結(jié)構(gòu)
文檔/視圖結(jié)構(gòu)的適用范圍:適于大量數(shù)據(jù)要進(jìn)行處理的場(chǎng)合。不適于以下場(chǎng)合:非面向數(shù)據(jù)的應(yīng)用或數(shù)據(jù)量很少的應(yīng)用程序。非標(biāo)準(zhǔn)的窗口用戶界面的程序。237文檔/視圖結(jié)構(gòu)設(shè)置窗體為MDI主窗體:IsMdiContainer=True;238.NET中MDI相關(guān)知識(shí)獲取當(dāng)前的子窗體集合MdiChildrenforeach(Fromfinthis.MdiChildren)
if(fisForm2)
f.focus();獲取活動(dòng)的主窗體ActiveMdiChild239.NET中MDI相關(guān)知識(shí)排列子窗體240.NET中MDI相關(guān)知識(shí)ArrangeIcons所有MDI子圖標(biāo)均排列在MDI父窗體的工作區(qū)內(nèi)Cascade所有MDI子窗口均層疊在MDI父窗體的工作區(qū)內(nèi)。TileHorizontal所有MDI子窗口均水平平鋪在MDI父窗體的工作區(qū)內(nèi)。TileVertical所有MDI子窗口均垂直平鋪在MDI父窗體的工作區(qū)內(nèi)。激活指定窗體ActivateMdiChild(Formform)Mainform.ActivateMdiChild(childForm);childForm.Focus();確定窗體是否是MDI子窗體或主窗體使用Form類的內(nèi)部屬性IsMdiChild/IsMdiContainerif(form.IsMdiChild) form.Show();else form.ShowDialog();241.NET中MDI相關(guān)知識(shí)設(shè)置MDI子窗體的數(shù)據(jù)Clipboard:剪貼板對(duì)象,該對(duì)象提供將數(shù)據(jù)置于系統(tǒng)剪貼板中以及從中檢索數(shù)據(jù)的方法Clipboard.GetDataObject:檢索當(dāng)前位于系統(tǒng)剪貼板中的數(shù)據(jù)IdataObject.GetDataPresent:確定此實(shí)例中存儲(chǔ)的數(shù)據(jù)是否與指定的格式關(guān)聯(lián)。IdataObject.GetData:檢索與指定的數(shù)據(jù)格式關(guān)聯(lián)的數(shù)據(jù)。242.NET中MDI相關(guān)知識(shí).NET中MDI相關(guān)知識(shí)IDataObjectdata=Clipboard.GetDataObject();if(data.GetDataPresent(DataFormats.Text){ stringtext=data.GetData(DataFormats.Text).ToString();}MDI子窗體的特點(diǎn):MDI子窗體由MDI父窗體調(diào)度。MDI子窗體需要通過(guò)MdiParent指出其MDI父窗體。MDI子窗體不能以模式對(duì)話框的方式顯示。244.NET中MDI相關(guān)知識(shí)ChildFormchildform=newChildForm();childform.MdiParent=this;childform.Show();MDI程序的菜單及子菜單的合并在主窗體中顯示子窗體列表通過(guò)指定MdiWindowsListItem實(shí)現(xiàn)菜單的合并245.NET中MDI相關(guān)知識(shí).NET中MDI相關(guān)知識(shí)Dotnet2.0中:MDI窗體菜單的合并涉及到Form的MainMenuStrip屬性和MenuStrip的AllowMerge屬性設(shè)置MDI主窗體和子窗體的MenuStrip菜單AllowMerge屬性為true;設(shè)置MDI主窗體的MainMenuStrip菜單為一特定的MenuStrip菜單.NET中MDI相關(guān)知識(shí)MenuStrip合并相關(guān)屬性MergeAction指示該菜單項(xiàng)的菜單與另一個(gè)菜單合并時(shí)該菜單項(xiàng)的行為,其值如下之一:Append忽略匹配結(jié)果,將該項(xiàng)追加到集合結(jié)尾Insert將該項(xiàng)插入目標(biāo)集合中的匹配項(xiàng)前。如果匹配項(xiàng)在列表的結(jié)尾,將該項(xiàng)追加到列表。如果沒有匹配項(xiàng),將該項(xiàng)插入到集合的開始MatchOnly要求匹配項(xiàng),但不進(jìn)行任何操作,使用此方法來(lái)創(chuàng)建樹和成功訪問(wèn)嵌套布局Remove:移除匹配項(xiàng)Replace:用源項(xiàng)替換匹配項(xiàng)。原始項(xiàng)的下拉項(xiàng)不會(huì)成為項(xiàng)的子項(xiàng)MergeIndex指示菜單項(xiàng)與另一個(gè)菜單項(xiàng)合并時(shí)的相對(duì)位置.NET中MDI相關(guān)知識(shí)注意:MDI子窗體的MenuStrip被合并到主窗體后回保留占位符,影響界面的顯示效果,解決此問(wèn)題要將窗體的菜單控件Visible屬性設(shè)置為false即可。MDI程序的退出事件System
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全款轉(zhuǎn)讓房產(chǎn)合同范本
- 加班法務(wù)合同范本
- 公司入股合同范本文檔
- 仔豬購(gòu)銷糾紛合同范本
- 包裝插畫合同范本
- 農(nóng)村協(xié)議買房合同范本
- 2024年金山區(qū)衛(wèi)生健康事業(yè)單位招聘衛(wèi)生專業(yè)技術(shù)人員考試真題
- 2024年南丹縣丹融文化傳媒有限公司招聘筆試真題
- 農(nóng)村修水渠合同范本
- 2024年阜陽(yáng)市皖西北(阜南)糧食產(chǎn)業(yè)園有限公司招聘考試真題
- 2023年12月大學(xué)英語(yǔ)四級(jí)第一套真題和答案
- 河北省職業(yè)院校技能大賽建筑信息模型建模與應(yīng)用(高職組)賽項(xiàng)參考試題及答案
- 水手課件教學(xué)課件
- 《微生物學(xué)發(fā)展史》課件
- 網(wǎng)約車司機(jī)安全培訓(xùn)
- 創(chuàng)新思維與創(chuàng)造力開發(fā)(山西經(jīng)貿(mào)職業(yè)學(xué)院)知到智慧樹答案
- 2024年濰坊護(hù)理職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案解析
- DB52T 1566-2021 托幼機(jī)構(gòu)消毒衛(wèi)生規(guī)范
- 非煤礦山復(fù)工復(fù)產(chǎn)安全培訓(xùn)
- 我國(guó)科技型中小企業(yè)稅收優(yōu)惠政策激勵(lì)效應(yīng)及優(yōu)化路徑研究的開題報(bào)告
- 舞蹈學(xué)課件教學(xué)課件
評(píng)論
0/150
提交評(píng)論