C#學(xué)習(xí)資料(內(nèi)部資料)_第1頁
C#學(xué)習(xí)資料(內(nèi)部資料)_第2頁
C#學(xué)習(xí)資料(內(nèi)部資料)_第3頁
C#學(xué)習(xí)資料(內(nèi)部資料)_第4頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

C#基礎(chǔ)類型和變量類型C#支持兩種類型:“值類型”和“引用類型”。值類型包括簡單類型(如char、int和float等)、枚舉類型和結(jié)構(gòu)類型。引用類型包括類(Class)類型、接口類型、委托類型和數(shù)組類型。變量的類型聲明每個變量必須預(yù)先聲明其類型。如inta;intb=100;floatj=4.5;stringsi;用object可以表示所有的類型。預(yù)定義類型下表列出了預(yù)定義類型,并說明如何使用。類型說明示例范圍object所有其他類型的最終基類型object〇=null;string字符串類型;字符串是Unicode字符序列strings:’hello”;sbyte8位有符號整型sbyteval=12;-128到127short16位有符號整型shortval=12;-32,768到32,767int32位有符號整型intval=12;-2,147,483,648 到2,147,483,647long64位有符號整型longvail=12;-9,223,372,036,854,775,808

longval2=34L;到9,223,372,036,854,775,807byte8位無符號整型bytevail=12;0至リ255ushort16位無符號整型ushortval1=12;0到65,535uint32位無符號整型uintvail=12;uintval2=34U;0至(!4,294,967,295ulong64位無符號整型ulongval1=12;ulongval2=34U;ulongval3=56L;ulongval4=78UL;0 到18,446,744,073,709,551,615float單精度浮點(diǎn)型floatval=1.23F;7位±1.5X10-45 到±3.4xio38double雙精度浮點(diǎn)型doubleval1=1.23;doubleval2=4.56D;15-16±5.0x10-324 至U±1.7X10308bool布爾型;boo!值或為真或為假boolval1=true;boolval2=false;char字符類型;char值是ー個Unicode字符charval='h';decimal精確的小數(shù)類型,具有28個有效數(shù)字decimalval=1.23M;28-29±1.0X10-2S 至U±7.9x1028DateTime變量轉(zhuǎn)換簡單轉(zhuǎn)換:floatf=100.1234f;可以用括號轉(zhuǎn)換:shorts=(short)f也可以利用Convert方法來轉(zhuǎn)換:stringsi;sl=Convert.ToString(a);MessageBox.Show(sl);常用Convert方法有:

C#備注Convert.ToBooleanConvert.rFoByteConvert.ToCharConvert.ToDateTimeConvert.ToDecimalConvert.ToDoubleConvert.Tolntl6Convert.Tolnt32Convert.Tolnt64Convert.ToSByteConvert.ToSingleConvert.ToStringConvert.ToUIntl6Convert.ToUInt32Convert.ToUInt64Math類常用科學(xué)計算方法:at備注Math.Abs絕對值Math.Sqrt升一方Math.Round取整,四舍五入Math.Floor取整,放棄小數(shù)Math.Cos余弦Math.Sin正弦Math.Tan正切Math.Exp返回e的指定次事Math.Log內(nèi)數(shù)Math.Pow(x,y)數(shù)字”的y次竊Math.Max(x,y)返回較大者M(jìn)ath.Min(x,y)返回較小者枚舉型一般為字符串,可以定義帶數(shù)字的枚舉型,示例為:enumColor(Red=l,Blue=2,Green=3)classShape(publicintFill(Colorcolor)(intii;switch(color)(caseColor.Red:ii=10;break;caseColor.Blue:ii=ll;break;caseColor.Green:ii=12;break;default:ii=-l;break;}returnii;))privatevoidbuttonl_Click(objectsender,System.EventArgse)(inti;Shapesl=newShape();i=sl.Fill((Color)2);//i=sl.Fill(Color.Blue);MessageBox.Show(i.ToStringO);

Enum需要放在class外面,才能被其它c(diǎn)lass的程序調(diào)用。C#關(guān)鍵字abstracteventnewstructasexplicitnullswitchbaseexternobjectthisboolfalseoperatorthrowbreakfinallyouttruebytefixedoverridetrycasefloatparamstypeofcatchforprivateuintcharforeachprotectedulongcheckedgotopublicuncheckedclassifreadonlyunsafeconstimplicitrefushortcontinueinreturnusingdecimalintsbytevirtualdefaultinterfacesealedvolatiledelegateinternalshortvoiddoissizeofwhiledoublelockstackallocelselongstaticenumnamespacestring數(shù)組定義數(shù)組是ー種排列有序的數(shù)據(jù)結(jié)構(gòu),包含于數(shù)組中的變量被稱為數(shù)組的元素,它們都有相同的類型。數(shù)組聲明int[]array1=newint[5];int[,Jarray3=newint[10,20,30];int[]array1=newint[]{1,2,4};數(shù)組引用arrayl[O]=*ar;注意,如果定義數(shù)組為int[5],則從〇?4。數(shù)組長度lineO.GetLength(l)數(shù)組賦值可以從?個已經(jīng)賦值的數(shù)組array2向未賦值的同等數(shù)組arrayl賦值,用arrayl=array2;這時,array1就變成和array2ー樣的數(shù)組了。隹厶果口集合的使用集合可以看成是可以隨意添加的數(shù)組,因此凡是在使用數(shù)組的場合,都可以使用集合。而且集合的元素可以是任意對象,操作也比數(shù)組靈活的多。使用集合時,必須注意集合的生命期問題。如果有兩個集合L1和L2,使用TL1=L2;后,只要L2生命期沒有終結(jié),它的以后的變化就可能會影響到L1的數(shù)值。因此在賦值后應(yīng)該及時銷毀或者初始化L2,以免發(fā)生不可預(yù)見的錯誤。比較使用Contains方法。ArrayListArrayl=newArrayList();Arrayl.Add(nasH);boolbl=Arrayl.Contains。as");MessageBox.Show(bLToStringQ);找到集合中數(shù)量最多的ー個元素利用方法來查找,可以返回兩個變量。objectJmaxO(ArrayListvll,refintjj)(inti;objectj0=0;ArrayListyll=newArrayList()J〃各個不同的元素的集合int[]yl2=newint[vl1.Count];//記錄各個元素數(shù)量的數(shù)組intxmax=0J〃最大的ー個元素的數(shù)量for(i=0;i<vll.Count;i++){jO=(object)vll[i];if(yl1.Contains(jO))(yl2[yll.IndexOf(j0)]++;)else{yll.Add(jO);yl2[yll.Count-1]=1;xmax=yl2[0];jO=(object)yll[0];for(i=l;i<yll.Count;i++){if(yl2[i]>xmax){xmax=yl2[i];j0=(object)yll[i];))jj=xmax;returnjO;)privatevoidbuttonl_Click(objectsender,System.EventArgse)(ArrayListArrayl=newArrayList();intjj=O;doublej0=0;objectjl=0;j0=2.3;Array1.Add(jO);j0=2.3;Array1.Add(jO);jO=l.OOOf;Array1.Add(jO);j0=2.3;Array1.Add(jO);jO=l;Array1.Add(jO);jl=JmaxO(Array1,refjj);MessageBox.Show(jl.ToString()+**+jj.ToStringO);)運(yùn)算符和判斷判斷if(x>10)if(y>20)Console.Write(nStatement_r,);elseConsole.Write(nStatement_2n);關(guān)系運(yùn)算符<,<=,>,>=等于:==不等于:!=判斷字符串string和char用Equals方法。邏輯運(yùn)算符與:a&b或:aIb非:!A模數(shù)運(yùn)算符模數(shù)運(yùn)算符(%)計算第二個操作數(shù)除第一個操作數(shù)后的余數(shù)。所有數(shù)值類型都具有預(yù)定義的模數(shù)運(yùn)算符。如Console.WriteLine(5%2); //=1Console.WriteLine(-5%2); //=-1Console.WriteLine(5.0%2.2); //=0.6Console.WriteLine(-5.2%2.0);//=-1.2經(jīng)常用模數(shù)運(yùn)算符來判斷整數(shù)為奇數(shù)(=1)或偶數(shù)(=0)o循環(huán)無條件循環(huán)intsum,x;sumニ〇;for(x=l;x<=100;x++)(sum+=x;}有條件循環(huán)privatevoidbutton1Click(objectsender,System.EventArgse)(intsum=0;intx=0;while((sum<100)&(x<20))(x++;sum+二x;}strings2=Convert.ToString(x);MessageBox.Show(s2);)運(yùn)行顯示14。如果改為while((sum<100)|(x<20))運(yùn)行顯示20。多重選擇switch(i)(case0:CaseZero();break;case1:CaseOne();break;default:CaseOthers();break;)每個case后面,必須有break或者goto,不允許貫穿。Gotogoto語句將程序控制直接傳遞給標(biāo)記語句。for(inti=0;i<x;i++)for(intj=O;j<y;j++)if(myArray[i,j].Equals(myNumber))gotoFound;Console.WriteLine(nThenumber{0}wasnotfound.'*,myNumber);gotoFinish;Found:Console.WriteLine(nThenumber{0}isfound.myNumber);Finish:Console.WriteLine(HEndofsearch.n);foreachforeach語句為對數(shù)組或者集合中的每個元素重復(fù)執(zhí)行嵌入語句。對于數(shù)組示例為:usingSystem;classMainClass(publicstaticvoidMain(){intodd=0,even=0;int[]arr=newint[]{0,1,2,5,7,8,11};foreach(intiinarr)(if(i%2=0)even++;elseodd++;}Console.WriteLine(HFound{0}OddNumbers,and{1}EvenNumbers.n,odd,even);break退出當(dāng)前的循環(huán)。也可以退出當(dāng)前模塊,使用ー個空while循環(huán),示例如下:voidCH(doubleXI)(boolbl=true;while(bl){if(Xl=1.0)|MessageBox.Show("YES");break;}MessageBox.Show("no");bl=false;))輸出格式簡單格式對于控制臺程序:Console.WriteLine(HFound{0}OddNumbers,and{1}EvenNumbers/*,odd,even);對于普通系統(tǒng):intx=l,y=2;stringsO;sO=string.Format(**Found{0}OddNumbers,and{1}EvenNumbers.**,x,y);MessageBox.Show(sO);format用指定字符和數(shù)字說明格式。C(貨幣格式,用NumberFormatlnfo指定種類)D(十進(jìn)制整數(shù))E(科學(xué)計數(shù)法)F(固定點(diǎn))G(常規(guī))N(數(shù)字)P(百分比)等。Thread.CurrentThread.CurrentCulture=newCulturelnfd("en-us");doubleMyDouble=123456789;Console.WriteLine(MyDouble.ToString("C1"));Console.WriteLine(MyDouble.ToString("E"));Console.WriteLine(MyDouble.ToString("P"));Console.WriteLine(MyDouble.ToString("N3"));Console.WriteLine(MyDouble.ToString("F"));運(yùn)行顯示:$123,456,789.01.234568E+00812,345,678,900.00%123,456,789.000123456789.00還可以這樣使用:String.Format("{0:F2}{1:F2}{2:F2}",x,y,z)控制臺程序打開VisualC#.NET2003,選擇【新建】/【項目】,或者選擇【新建項目】在VisualC#項目中選擇【控制臺應(yīng)用程序】,選擇程序名稱和位置后,進(jìn)入程序界面(IDE)〇

文件9編輯隻)視圖9工具⑴窗ロ置)幫助也)卸?¥◎ ?* 甯H這時系統(tǒng)生成一?個classl.cs的程序文件。修改成以下:usingSystem;namespaceConsole2{//A*HelloWorld!*programinC#classHello(staticvoidMain()(Console.WriteLine(*HelloWorld!*);}點(diǎn)擊【調(diào)試】/【開始執(zhí)行(不調(diào)試),就可以在DOS界面下看見結(jié)果。二、使用控件基本操作添加控件選擇程序名稱和位置后,進(jìn)入程序的ー個Forml界面。從左邊的【工具箱】/【W(wǎng)indows窗體】中,添加一個Label控件和一個Button控件,雙擊Buttonl,添加程序如下:privatevoidbuttonlClick(objectsender,System.EventArgse)(label1.Text="iiii";)就可以查看運(yùn)行效果了。如果修改成label1.Left=label1.Left+10;就可以看見點(diǎn)擊Button后,標(biāo)簽右移的效果??丶幕咎匦怨ぞ呦涞目丶饕蠦utton(按鈕)、Label(標(biāo)簽)、TextBox(文本框)、RadioButton(單選按鈕)ヽCheckBox(復(fù)選框)ヽListBox(下拉框)等??梢噪p擊在Form上產(chǎn)生控件,也可以先點(diǎn)擊,然后在Form上畫矩形,決定控件的大小??丶幕咎匦杂惺录?、方法和屬性,詳見2.2??丶氖录饕蠧lick(單擊)、DoubleClick(雙擊)、MouseOver(鼠標(biāo)移過)等。控件的方法主有Focus(聚焦)、Hide(隱藏)、Show(顯示)等。控件的主要屬性有:.尺寸控制,主要有Width(寬度)、Height(高度)等;.位置控制,主要有Left(左邊界)、Top(上邊界)等;.顏色和字體控制,主要有BackColor(背景顏色)、ForeColor(前景顏色)、Font(字體)等;.名稱控制,主要有Name(控件名字)、Caption(控件標(biāo)題)等;.控件序號,主要有Tabindex(焦點(diǎn)的TAB順序控制)、Index(控件數(shù)組序號);.其它,主要有Enabled(決定控件是否激活,True或False),ToolTipText(鼠標(biāo)移過時顯示的文字)等。消息框MessageBox簡單使用方法使用消息框,可以在程序運(yùn)行到這里時彈出ー個對話框,顯示指定的文字。是向外輸出信息的重要方式。MessageBox.Show(*def*);通用方法消息框輸出必須為string類型,如果不是,則需要轉(zhuǎn)換:stringsi;sl=Convert.FoString(a);MessageBox.Show(sl);可以用以下函數(shù)簡化使用方法:privatevoidmsgbox(objecta)〃用消息框顯示任意ー個數(shù)(stringsi;si二Convert.ToString(a);MessageBox.Show(si):)較多使用方法MessageBox.Show(nnameM,"NameEntry",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);其中第二項開始依次為消息框的標(biāo)題、按鈕樣式、圖標(biāo)樣式。MessageBoxButtons的數(shù)值為枚舉型,為OK(缺省)、AbortRetryIgnore>OKCancel>RetryCancel>YesNo>YesNoCancelo獲取返回信息privatevoidbutton2_Click(objectsender,System.EventArgse){DialogResultresult;result=MessageBox.Show("name,"NameEntry",MessageBoxButtons.YesNo,MessageBoxIcon.Question);MessageBox.Show(result.,PoStringO);)如果要參與判斷,則用stringls=result.ToStringO;完全使用方法本例檢查textBoxl中輸入文本沒有,如果沒有就提示,并可以獲取返回信息。privatevoidbutton1_Click(objectsender,System.EventArgse)(if(textBoxl.Text.Length=0)(stringmessage="Youdidnotenteraservername.Cancelthisoperation?";stringcaption=NoServerNameSpecified";MessageBoxButtonsbuttons=MessageBoxButtons.YesNo;DialogResultresult;result=MessageBox.Show(this,message,caption,buttons,MessageBoxIcon.Question,MessageBoxDefau1tButton.Button1,MessageBoxOptions.RightAlign);if(result=DialogResult.Yes)this.Close();文本框基本功能文本框主要是用來輸入和顯示文字的。添加一個TextBox,系統(tǒng)自己產(chǎn)生名字textBoxl,程序如下:privatevoidbuttonl_Click(objectsender,System.EventArgse){MessageBox.Show(textBoxl.Text);)運(yùn)行時,就可以在消息框中顯示文本框輸入的字符串。TextBox一般顯示單行,如果把屬性Multiline改為Ture,還可以顯示多行數(shù)字。輸入數(shù)字輸入數(shù)字需要轉(zhuǎn)換:inta;stringsi;a=Convert.ToIntl6(textBoxl.Text);a=a+5;sl=Convert.ToString(a);MessageBox.Show(si);初始化文本框的初始化就是向文本框賦初始值。可以從事件過程里寫入,也可以在IDE的右邊屬性欄里輸入,但是推薦采用在Form初始化時寫入。publicForml()(InitializeComponent();//TODO:在InilializeComponenl調(diào)用后添加任何構(gòu)造函數(shù)代碼textBoxl.Text=;,1窗體調(diào)用簡單調(diào)用上面的例子都是在一個窗體中,實(shí)際程序需要兒十甚至上百個窗體。以下例子創(chuàng)建兩個窗體,然后實(shí)現(xiàn)相互調(diào)用。在Forml中添加兩個Button,一個標(biāo)題為調(diào)用,ー個標(biāo)題為退出。使用【項目】/【添加窗體】,添加一個窗體,缺省名稱為Form2。添加一個Button.標(biāo)題為返回。窗體1程序為:privatevoidbuttonl_Click(objectsender,System.EventArgse)(Form2Nform2=newForm2();Nform2.Show();this.HideO;}privatevoidbutton2Click(objectsender,System.EventArgse)(Application.Exit();)窗體2程序為:privatevoidbutton1Click(objectsender,System.EventArgse)(FormlNforml=newForml();Nforml.Show();this.HideO;運(yùn)行程序,可以在兩個窗體之間來回調(diào)用,按“退出”就可以退出程序。程序運(yùn)行時,如果發(fā)現(xiàn)窗體位置不固定,這時需要在窗體的StartPosition屬性上設(shè)置窗體固定位置,一般為屏幕中央。注意,兩個窗體要在ー個命名空間,否則要引用。傳遞參數(shù)調(diào)用在Forml中添加ー個Button!和一個textBoxl?程序為:privateForm2otherForm=newForm2();privatevoidGetOtherFormTextBox()(textBoxl.Text=otherForm.TextBoxl.Text;)privatevoidbutton1Click(objectsender,System.EventArgse)(GetOtherFormTextBox();)在Form2中添加一個textBoxl,在InitializeComponent();后面添加?個賦值語句為:textBoxl.Text=*abd*;然后添加一個屬性:publicTextBoxTextBoxl(get{returntextBoxl;})運(yùn)行時,點(diǎn)擊Forml中的Button1,可以把Form2的TextBox的數(shù)值取到Form!的TextBox中來復(fù)雜傳遞參數(shù)本例是移動ー個標(biāo)簽,在兩個Form之間來回移動。先設(shè)計Form!如下:設(shè)計Form2,除了少了一個退出按鈕外,其余相同。在Form!的InitializeComponent。下面加上窗體定位語句:PointtempPoint=newPoint(100,100);this.DesktopLocation=tempPoint;然后把Forml的StartPosition屬性改為Manua!〇其余程序為:publicLabelL2(get(returnlabel1;}set(labell=value;})privatevoidbutton2_Click(objectsender,System.EventArgse)Form2otherForm=newForm2();label1.Left=label1.Left+10;if(labell.Left>=this.Width-10){otherForm.Show();otherForm.LI.Top=label1.Top;this.HideO;))privatevoidbuttonl_Click(objectsender,System.EventArgse)(labell.Left=labell.Left-10;)privatevoidbutton3_Click(objectsender,System.EventArgse)(labelI.Top=label1.Top-10;)privatevoidbutton4_Click(objectsender,System.EventArgse)(labell.Top=labell.Top+10;)privatevoidbutton5_Click(objectsender,System.EventArgse){App1ication.Exit();)同樣在Form2的InitializeComponent()下面加上窗體定位語句:PointtempPoint=newPoint(300,100);this.DesktopLocation=tempPoint;然后把Form2的StartPosition屬性改為Manual〇其余程序為:publicLabelLI(get{returnlabell;}setlabell=value;privatevoidbutton2_Click(objectsender,System.EventArgse)(label1.Left=label1.Left+10;}privatevoidbuttonl_Click(objectsender,System.EventArgse)(FormlotherForml=newForml();label1.Left=label1.Left-10;if(labell.Left<=-10)(otherForml.Show();otherForml.L2.Top=label1.Top;otherForml.L2.Left=otherForml.Width-20;this.HideO;})privatevoidbutton3_Click(objectsender,System.EventArgse)(label1.Top=label1.Top-10;)privatevoidbutton4_Click(objectsender,System.EventArgse)(label1.Top=labell.Top+10;)動態(tài)產(chǎn)生窗體publicvoidCreateMyFormO(Formforml=newFormO;Labellabel1=newLabel();Buttonbuttonl=newButton();TextBoxtextl=newTextBox();buttonl.Text="確定”;buttonl.Location=newPoint(110,220);label1.Location=newPoint(50,100);textl.Location=newPoint(150,100);forml.Text="請輸入";label1.Text="數(shù)據(jù)";forml.FormBorderStyle=FormBorderStyle.FixedDialog;forml.ControlBox=false;forml.CancelButton=button1;forml.StartPosition=FormStartPosition.CenterScreen;forml.Controls.Add(buttonl);forml.Controls.Add(text1);forml.Controls.Add(label1);forml.ShowDialogO;ls=text1.Text;)privatevoidbutton2_Click(objectsender,System.EventArgse)(CreateMyFormO;MessageBox.Show(1s);)ToolBar普通使用在窗體上加上ToolBar界面修改后的問題在界面上修改后,最后要加上:toolBari.Buttons.Add(too1BarButton1);toolBarl.Buttons.Add(toolBarButton2);toolBari.Buttons.Add(too1BarButton3);//Addtheevent-handlerdelegate.toolBarl.ButtonClick+=newToolBarButtonClickEventHandler(this.toolBarlButtonClick);或者把原有的程序this.toolBarl.Buttons.AddRange(newSystem.Windows.Forms.ToolBarButton[]{this.toolBarButtonl,this.toolBarButton2,this.toolBarButton3));改變位置,至リtoolBarl設(shè)置的最下面。全部設(shè)置程序為:this.toolBarl.DropDownArrows=true;this.toolBarl.Location=newSystem.Drawing.Point(0,0);this.toolBarl.Name="toolBarl";this.toolBarl.ShowToolTips=true;this.toolBarl.Size=newSystem.Drawing.Size(592,42);this.toolBarl.Tabindex=0;toolBarl.ButtonSize=newSystem.Drawing.Size(60,50);//toolBarButtonl//this.toolBarButtonl.Text二'Open";toolBarButtonl.Style=System.Windows.Forms.ToolBarButtonStyle.ToggleButton;////toolBarButton2//this.toolBarButton2.Text="Save";toolBarButton2.Style=System.Windows.Forms.ToolBarButtonStyle.ToggleButton;//toolBarButton3//this.toolBarButton3.Text="Print";toolBarl.Buttons.Add(toolBarButtonl);toolBarl.Buttons.Add(toolBarButton2);toolBarl.Buttons.Add(toolBarButton3);toolBarl.ButtonClick +二 new ToolBarButtonC1ickEventHand1er(this.toolBarlButtonClick);設(shè)置按鈕大小如下設(shè)置,可以正常居中顯示9號字體。toolBarl.ButtonSize=newSystem.Drawing.Size(60,50);用程序?qū)崿F(xiàn)可以用程序?qū)崿F(xiàn)按鈕的增加,但是無法全部實(shí)現(xiàn)自動化。先需要手工添加toolBarl和imageListl?然后把imageListl中的圖片ーー加上口voidtoolBarSet()(〃添加按鈕ToolBarButtontoolBarButton1=newToolBarButtonO;ToolBarButtontoolBarButton2=newToolBarButtonO;toolBarl.Buttons.AddRange(newSystem.Windows.Forms.ToolBarButton[]{toolBarButtonl,toolBarButton2});toolBarl.DropDownArrows=true;toolBarl.ImageList=imageListl;toolBarl.Size=newSystem.Drawing.Size(408,37);toolBarl.Tabindex=0;toolBarl.ButtonClick+=newSystem.Windows.Forms.ToolBarButtonClickEventHandler(toolBarl_ButtonClick);//toolBarButtonltoolBarButtonl.Imageindex=0;toolBarButtonl.ToolTipText="放大";IItoolBarButton2toolBarButton2.Imageindex=!;toolBarButton2.ToolTipText="縮小";}privatevoidFormlLoad(objectsender,System.EventArgse)(toolBarSet();privatevoidtoolBarl_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse)switch(toolBarl.Buttons.IndexOf(e.Button))case0: 〃放大MessageBox.Show("放大");break;case1:〃縮小MessageBox.Show(“縮小〃);break;default:MessageBox.Show("other");break;listBox普通調(diào)用在窗體上放置一個listBoxl,ー個buttonl和一個labell。以下程序?qū)崿F(xiàn)添加選項,雙擊選項就可以顯示你的選擇:privatevoidbuttonlClick(objectsender,System.EventArgse)(listBoxl.Items.Clear();listBoxl.Items.Add("");listBoxl.Items.Add("選擇1");listBoxl.Items.Add("選擇2”);listBoxl.SelectedIndex=O;)privatevoid1istBoxl_Doub1eC1ick(objectsender,System.EventArgse){Label1.fFext=listBoxl.Selectedlndex.ToStringO;}第一項是ー個缺省空項,允許用戶不選取退出。Items是ー個集合,因此增減選項可以按照集合那樣操作。用數(shù)組添加選項System.Object[]ItemObject=newSystem.Object[10];for(inti=0;i<=9;i-H-)ItemObject[i]="Item”+i;listBoxl.Items.AddRange(ItemObject);ScrollBar基本定義ScrollBar是滾動條控件,分成HScrollBar(水平)和VScrollBar(垂直)兩種。有些控件如ListBox,TextBox等可以自動添加滾動條,但是有些控件則需要用程序添加。主要屬性意義為:Value:滾動條的數(shù)值,反映當(dāng)前移動塊的位置。初始值設(shè)定后,運(yùn)行時停留在這個位置。運(yùn)行時拉動滾動條,由Scroll事件的e.NewValue參數(shù)傳遞過來。Maximum:Value的最大值,一般為100。Minimum:Value的最小值,即端點(diǎn)的數(shù)值。如果Maximum=100,Minimum=0,LargeChange=10,則從第一個端點(diǎn)開始Value=0,到另一個端點(diǎn)的Value=91〇SmallChange:每次點(diǎn)擊移動的數(shù)值,一般為1〇LargeChange:移動塊的長度,一般為10。和PicturBox控件一起使用floatvi;〃每個單位的移動距離floatvk=0.8f;“PicturBox顯示高度和實(shí)際高度的比例intt0,ti;"PicturBox顯示Top和Height。privatevoidvScrolIBarl_Scrol1(objectsender,System.Windows.Forms.ScrollEventArgse)(this.pictureBoxl.Top=tO-Convert.Tolnt32(e.NewValue*vi);this.pictureBoxl.Height=ti+Convert.Tolnt32(e.NewValue*vi);)privatevoidbuttonl_Click(objectsender,System.EventArgse)(ButtonoButton;TextBoxoTextBox;for(inti=l;i<=8;i++)(oButton=newButton();oButton.Text="按鈕”+i.ToStringO;oButton.Location=newSystem.Drawing.Point(50,i*50);oButton.Click+=newSystem.EventHandler(oButton_Click);this.pictureBoxl.Controls.Add(oButton);oTextBox=newTextBoxO;oButton.Tag=oTextBox;oTextBox.Text="1000”;oTextBox.Location=newSystem.Drawing.Point(150,i*50);this.pictureBoxl.Controls.Add(oTextBox);})privatevoidoButton_Click(objectsender,System.EventArgse)(Buttonbtn=(Button)sender;TextBoxtxt=(TextBox)btn.Tag;txt.Text=Convert.ToString(Convert.Tolnt32(txt.Text)+1);)privatevoidFormlLoad(objectsender,System.EventArgse)(vi=vk*pictureBoxl.Height/vScrollBarl.Maximum;tO=pictureBoxl.Top;ti二pictureBoxl.Height;Panel基本定義Windows窗體Panel(面板)控件用于為其他控件提供可識別的分組。在設(shè)計時所有控件均可輕松地移動,當(dāng)移動Panel控件時,它包含的所有控件也將移動。分組在ー個面板中的控件可以通過面板的Controls屬性進(jìn)行訪問。Panel控件類似于GroupBox控件;但只有Panel控件可以有滾動條,而.且只有GroupBoX控件顯示標(biāo)題。將AutoScrol!屬性設(shè)置為true,可以自動顯示滾動條。但是這時右邊界和下邊界頂頭,不是太好看。這時需要增加一個不可見的控件或者圖像來調(diào)整。下例在Panel上用程序添加幾個控件,產(chǎn)生滾動效果:privatevoidbuttonlClick(objectsender,System.EventArgse)ButtonoButton;TextBoxoTextBox;for(inti=l;i<=8;i++)(oButton=newButton();oButton.Text="按鈕”+i.ToStringO;oButton.Location=newSystem.Drawing.Point(50,i*50);oButton.Click+=newSystem.EventHandler(oButton_Click);this,panel1.Controls.Add(oButton);oTextBox=newTextBox();oButton.Tag=oTextBox;oTextBox.Text="1000”;oTextBox.Location=newSystem.Drawing.Point(150,i*50);this,panel1.Controls.Add(oTextBox);}〃增加一個不可見按鈕,調(diào)整右邊界和下邊界的位置oButton=newButton();oButton.Location=newSystem.Drawing.Point(260,440);oButton.Height=0;oButton.Widthニ〇;this,panel1.Controls.Add(oButton);}privatevoidoButton_Click(objectsender,System.EventArgse)(Buttonbtn二(Button)sender;TextBoxtxt=(TextBox)btn.Tag;txt.Text=Convert.ToString(Convert.Tolnt32(txt.Text)+1);}在Panel控件上添加圖像在Panel控件上不能直接添加圖像。需要在Panel控件上添加一個picturBox,然后把其SizeMode設(shè)置為AutoSize(隨著圖像大小調(diào)整控件大小)就可以實(shí)現(xiàn)圖像的隨意滾動察看。在Panel控件上畫圖Panel控件上也可以畫圖。但是滾動時遮蓋的圖像就消失了。這時候需要在Pane!控件上添加一個picturBox,然后在picturBox上畫圖,然后用ー個LocationChanged事件,每次滾動時重畫一一遍即可:Penpenl=newPen(Color.Green,2);Graphicsgl;voiddrawLine()(PointFpl-newPointF(0,0);PointFp2=newPointF(100,100);gl.DrawLine(penl,pl,p2);)privatevoidbutton2_Click(objectsender,System.EventArgse)(gl=this.pictureBoxl.CreateGraphics();drawLine();}privatevoidpictureBoxl_LocationChanged(objectsender,System.EventArgse){drawLine();)菜單普通應(yīng)用手工添加即可。可以直接在其上寫各個菜單項的名字,雙擊可以添加程序,使用非常方便。特殊功能.在設(shè)計時向菜單項添加選中標(biāo)記對于在“菜單設(shè)計器’’內(nèi)選定的菜單項(三級菜單以下),單擊該菜單項左側(cè)的區(qū)域,選中標(biāo)記ム或者在“屬性''窗口中將Checked屬性設(shè)置為True。以編程方式向菜單項添加選中標(biāo)記myMnuItem.Checked=true;.在設(shè)計時向菜單項添加快捷鍵在“菜單設(shè)計器”內(nèi)選擇菜單項。在“屬性”窗口中,將Shortcut屬性設(shè)置為下拉列表中提供的值之一。以編程方式向菜單項添加快捷鍵myMnuItem.Shortcut=System.Windows.Forms.Shortcut.F6;.向菜單項添加訪問鍵如鍵入“文件(&F)”,顯示“文件(E)”。若要定位到此菜單項,請按ALT鍵,將焦點(diǎn)移動到菜單欄,然后按該菜單名稱的訪問鍵。當(dāng)菜單打開并顯示帶訪問鍵的項時,只需按該訪問鍵就可選定該菜單項?;蛘咧苯影碅LT+主菜單的訪問鍵。.將分隔線作為菜單項添加在菜單設(shè)計器中,右擊需要有分隔線的位置,然后選擇“插入分隔符”?;蛘咴谠O(shè)置菜單項的Text屬性(在“屬性”窗口中、菜單設(shè)計器中或代碼中)時,輸入短劃線(-)使該菜單項成為分隔線。其它控件單選按鈕單選按鈕是布置ー組按鈕,只能選擇ー組控件。本例放置3個單選按鈕,Text屬性分別寫上“已婚’‘、“未婚”和“離異”,然后添加一個Label控件和一個Button控件,程序如下:publicForml()(InitializeComponentO;labell.Text="請選擇”;privatevoidbuttonlClick(objectsender,System.EventArgse)(if(radioButtonl.Checked==true)label1.Text=radioButton1.Text;elseif(radioButton2.Checked=true)labell.Text=radioButton2.Text;elselabell.Text=radioButton3.Text;復(fù)選框可以選擇多個的ー組控件。本例放置2個復(fù)選按鈕,Text屬性分別寫上“加粗”和“斜體”,然后添加ー個Label控件和一個Button控件,程序如下:privatevoidbuttonl_Click(objectsender,System.EventArgse)(if(checkBoxl.Checked=true)(if(checkBox2.Checked=true)label1.Text=checkBoxl.Text+checkBox2.Text;elseif(checkBox2.Checked==false)labell.Text=checkBoxl.Text;}elseif(checkBox2.Checked=true)labell.Text=checkBox2.Text;elseif(checkBox2.Checked==false)labell.Text=””;)程序產(chǎn)生checkBoxCheckBoxcheckBoxl=newCheckBox();voidcheckSet()(this.Controls.Add(checkBox1);checkBox1.Location=newSystem.Drawing.Point(50,64);checkBox1.Name=checkBox1*;checkBox1.Tabindex=2;checkBoxl.Text="圖層1";checkBox1.CheckedChanged+=newSystem.EventHandler(checkBoxlCheckedChanged);}privatevoidbuttonl_Click(objectsender,System.EventArgse)|checkSet();}privatevoidcheckBoxlCheckedChanged(objectsender,System.EventArgse){if(checkBoxl.Checked)MessageBox.Show("yes");elseMessageBox.Show("no");}如果要實(shí)現(xiàn)標(biāo)題在左邊,用checkl.Width=90;checkl.CheckAlign=ContentAlignment.MiddleRight;要在其它控件顯示:check3.BringToFront();動態(tài)產(chǎn)生控件以下程序動態(tài)動態(tài)產(chǎn)生一組Button和TextBox控件,以及點(diǎn)擊Button的事件。privatevoidbutton2_Click(objectsender,System.EventArgse){ButtonoButton;TextBoxoTextBox;for(inti=1;iく=5;i++)oButton=newButton();oButton.Text="按鈕"+i.ToStringO;oButton.Location=newSystem.Drawing.Point(50,i*50);oButton.Click+=newSystem.EventHandler(oButton_Click);this.Controls.Add(oButton);oTextBox=newTextBoxO;oButton.Tag=oTextBox;oTextBox.Text="1000”;oTextBox.Location=newSystem.Drawing.Point(150,i*50);this.Controls.Add(oTextBox);)}privatevoidoButton_Click(objectsender,System.EventArgse)(Buttonbtn=(Button)sender;TextBoxtxt=(TextBox)btn.Tag;txt.Text=Convert.ToString(Convert.Tolnt32(txt.Text)+1);SplitterWindows窗體splitter控件用于在運(yùn)行時調(diào)整??靠丶拇笮?。Splitter控件常用于一類窗體,這類窗體上的控件所顯示的數(shù)據(jù)長度可變,如Windows資源管理器,它的數(shù)據(jù)窗格所包含的信息在不同的時間有不同的寬度。如果ー個控件可由splitter控件調(diào)整其大小,則當(dāng)用戶將鼠標(biāo)指針指向該控件的未??康倪吘墪r,鼠標(biāo)指針將更改外觀,指示該控件的大小是可以調(diào)整的。拆分控件允許用戶調(diào)整該控件緊前面的??靠丶拇笮?。因此,為使用戶能夠在運(yùn)行時調(diào)整??靠丶拇笮?請將要調(diào)整大小的控件停靠在容器的一條邊緣上,然后將拆分控件??吭谠撊萜鞯耐粋?cè)。以下例子自動產(chǎn)生幾個控件,可以在運(yùn)行中調(diào)整大小。privatevoidCreateMySplitControls0{rreeViewtreeViewl=newPreeViewO;ListView1istViewl=newListView();Splittersplitterl=newSplitter0;treeViewl.Dock=DockStyle.Left;splitterl.Dock=DockStyle.Left;splitterl.MinExtra=100;splitterl.MinSize=75;listViewl.Dock=DockStyle.Fill;treeViewl.Nodes.Add("TreeViewNode*);listViewl.Items.Add(*ListViewItem*);this.Controls.AddRange(newControl[]{listViewl,splitterl,treeViewl});}privatevoidbuttonl_Click(objectsender,System.EventArgse)(CreateMySplitControlsO;)tabControlWindows窗體TabControl顯示多個選項卡。使用時,先添加一l個TabControl控件,把它拉的足夠大。然后在屬性中添加按鈕。每個按鈕可以控制TabControl的其余頁面,作為…個容器,可以添加其它空間。運(yùn)行時只要點(diǎn)擊按鈕,就可以切換選項卡,實(shí)現(xiàn)不同的功能。StatusBar可以向statusBar添加面板(窗格),以分類顯示信息:publicvoidCreateStatusBarPanels()(statusBarl.Panels.Add("");statusBarl.Panels.Add("Two");statusBarl.Panels.Add("Three");statusBarl.Panels[0].Width=200;statusBarl.Panels[0].Text="0ne";statusBarl.ShowPanels=true;三、字符和字符串字符串的操作在程序設(shè)計中非常有用,因此單獨(dú)寫成一章。Char基本定義char關(guān)鍵字用于聲明一個字符。char類型的常數(shù)可以寫成字符、十六進(jìn)制換碼序列或Unicode表示形式。您也可以顯式轉(zhuǎn)換整數(shù)字符代碼。以下所有語句均聲明了一個char變量并用字符X將其初始化:charMyChar=X; //CharacterliteralcharMyChar=*\x0058,; //HexadecimalcharMyChar=(char)88; //CastfromintegraltypecharMyChar='\u0058'; //Unicodechar類型可隱式轉(zhuǎn)換為ushort>int>uint、long、ulong>float>double或decimal類型。但是,不存在從其他類型到char類型的隱式轉(zhuǎn)換。ToCharArray將字符串的部分字符復(fù)制到Unicode字符數(shù)組。示例stringstr=H012wxyz789H;char[]arr;arr=str.ToCharArray(3,4);顯示:wxyz計算字符串寬度由于英文和中文的顯示長度不一樣,所以一些場合要區(qū)分。要引用usingSystem.Globalization;程序為:〃計算ー個字符的字符類型,=0漢字,=1英文privateintgetCharType(charch)(intiO;UnicodeCategorycal=newUnicodeCategory();cal=System.Char.GetUnicodeCategory(ch);switch(cal)(caseUnicodeCategory.OtherPunctuation:i0=0;〃漢字break;caseUnicodeCategory.OtherLetter:i0=0;〃漢字break;caseUnicodeCategory.FinalQuotePunctuation:i0=0;〃漢字break;default:i0=l:〃英文break;}returniO;)〃計算字符串(ss,包含中文)的實(shí)際寬度(返回)、起點(diǎn)(x0)和高度(height)〃輸入字號SZ,只對于Pixel單位publicfloatStringWidth(stringss,floatsz,reffloatxO,reffloatheight){charchi;inti,i0=0;floatwidthニ〇;floatkl=l.02f:〃漢字系數(shù)floatk2=0.55f;〃英文系數(shù)floatk3=0.15f;〃x0系數(shù)floatk4=l.lOf;〃高度系數(shù)intil=0:〃漢字個數(shù)inti2二〇;〃英文個數(shù)height=k4*sz;x0=sz*k3;for(i=0;i<ss.Length;i++)chi二(char)ss[i];iO=getCharType(chl);if(iO=O)il++;elsei2++;}width=xO+i1*k1*sz+i2*k2*sz;returnwidth;)〃返回一個point單位的字體的寬度publicfloatPStringWidth(stringss,floatsz,reffloatxO,reffloatheight)(floatwidth=0;sz=sz*20/15;width=StringWidth(ss,sz,refxO,refheight);returnwidth;)這個方法在sz(字體大小)5?30內(nèi)比較準(zhǔn)確。很大時有誤差。計算字符串中心〃根據(jù)給定點(diǎn),找到實(shí)際標(biāo)注點(diǎn),使得以畫出的字符串以給定點(diǎn)為中心PointFStringCenter(stringsi,intsz,PointFpO){PointFpl=newPointF();floatx0=0;floatheight=0;floatwidth=StringWidth(sl,sz,refxO,refheight);pl.X=pO.X-+x0-width/2;pl.Y=pO.Y-height/2;returnpl;)計算字符串尺寸示例1—畫方框以下示例利用以上方法,把字符串的長度和高度畫成一個方框。privatevoidbutton2_Click(objectsender,System.EventArgse)(Graphicsg=this.CreateGraphics();SolidBrushmyBrush=newSolidBrush(Color.Red);floatx0=0;floatheightニ〇;intsz=10;floatpx二〇,py二50;PointFp0=newPointF(px,py);stringsiニ〃我們還34fd還是和平使者〃;FontmyFontl=newFont("宋體sz,FontStyle.Bold,GraphicsUnit.Pixel);floatwidth=StringWidth(si,sz,refxO,refheight);g.DrawString(si,myFontl,myBrush,pO);PointFpl=newPointF(px+xO,py);PointFp2=newPointF(px+xO+width,py);PointFp3=newPointF(px+xO+width,py+height);PointFp4二newPointF(px+xO,py+height);PointF[]cur={pl,p2,p3,p4};Penpenl=newPen(Color.Blue,2);g.DrawPolygon(penl,cur);計算字符串尺寸示例2一找中點(diǎn)privatevoidbuttonl_Click(objectsender,System.EventArgse)(Graphicsg=this.CreateGraphics();SolidBrushmyBrush=newSolidBrush(Color.Red);PointFps=newPointF();intsz=10;PointFp0=newPointF(300,100);stringsiニ〃我們還34fd還是和平使者”;FontmyFontl=newFont(宋體〃,sz,FontStyle.Bold,GraphicsUnit.Pixel);ps=StringCenter(si,sz,pO);g.DrawString(si,myFontl,myBrush,ps);〃以下畫十字線表示中心位置PointFpl二newPointF(0,pO.Y);PointFp2=newPointF(600,pO.Y);PointFp3二newPointF(pO.X,0);PointFp4=newPointF(pO.X,300);Penpenl二newPen(Color.Blue,1);g.DrawLine(penl,pl,p2);g.DrawLine(penl,p3,p4);)分行操作回車符和換行符“\r\n”顯示換行的語句為:textBoxl.Text=*ok\r\n*;textBoxl.Text+=*okl*;字符串分行stringmyString!="ThisisthefirstlineofmystringAn"+“Thisisthesecondlineofmystring.W"+“ThisisthethirdlineofthestringAn”;stringmyString2=@nThisisthefirstlineofmystring.Thisisthesecondlineofmystring.Thisisthethirdlineofthestring.";字符串操作字符串表示用@后邊的字符串不被處理。A1=@"c:\Docs\Source\a.txt";stringsi二礦c=a.txt;〃顯示:c=''a.txtstringsi二=""a.txt""”;//顯示:c="a.txt"If(si Then//sl=""求字符串長度stringsl="fdkls我們”;strings2=Convert.ToString(sl.Length);MessageBox.Show(s2);運(yùn)行顯示為7,所有字符個數(shù)。裁剪字符串Strings=*123abc456*;Console.WriteLine(s.Remove(3,3));打印“123456”。Split方法標(biāo)識此實(shí)例中的子字符串(它們由數(shù)組中指定的ー個或多個字符進(jìn)行分隔),然后將這些子字符串放入ー個String數(shù)組中。簡單的例子可以按照“,”分開,也可以去除空格。privatevoidbuttonl_Click(objectsender,System.EventArgse)(stringastring=”123,45678,789";string[]split;Char[]chr=newChar[]split=astring.Split(chr);MessageBox.Show(*/*+sp

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論