版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C#常用控件和類1C#簡介微軟Visual C# 2005 Express Edition(以后簡稱VS2005)是微軟推出的免費(fèi)版本,適合初學(xué)者學(xué)習(xí)用C#語言編寫Windows應(yīng)用程序,VS2005使用控件(組件)設(shè)計(jì)Windows應(yīng)用程序。將VS2005工具箱窗口中的控件放到窗體中,使用屬性窗口或在程序中用語句修改控件屬性,設(shè)計(jì)應(yīng)用程序界面,為控件增加事件處理函數(shù),完成指定的功能。21 控件通用屬性 大部分控件,例如Label、Button、TextBox等,都是Control類的派生類。Control類定義了這些派生類控件通用的一組屬性和方法,以下是Control類的一些常用屬性:Nam
2、e(名稱)Location(位置)Size(大小)Enabled(允許開關(guān))Visible(顯示開關(guān))BackColor(背景色)32 Form類 Form類是對(duì)Windows應(yīng)用程序窗體的封裝,屬于System.Windows.Forms命名空間。Form類對(duì)象具有Windows應(yīng)用程序窗體的最基本功能。它可以是對(duì)話框、單文檔或多文檔應(yīng)用程序窗口的基類。Form類對(duì)象還是一個(gè)容器,在Form窗體中可以放置其他控件,例如菜單控件、工具條控件等等,還可以放置子窗體。Form類常用屬性、方法和事件如下:42 Form類屬性AutoScroll屬性Text屬性AcceptButton和CancelB
3、utton屬性MaxiMizeBox屬性MiniMizeBox 方法Close()方法Hide() 方法Show()事件Load53 標(biāo)簽(Label)控件 Label控件常用屬性如下: Text: AutoSize: ForeColor: Font: 64 按鈕(Button)控件 Button控件常用屬性和事件如下: 屬性Text:事件Click: 74 按鈕(Button)控件(續(xù))private void button1_Click(object sender, EventArgs e) /此行語句為程序員增加的代碼,其余是自動(dòng)增加的代碼 label1.ForeColor=Color.
4、Red;/label1是控件名字(label的Name屬性),用來區(qū)分不同控件。 private void button2_Click(object sender, EventArgs e)label1.ForeColor=Color.Black; /運(yùn)行階段修改屬性,Black為Color結(jié)構(gòu)的靜態(tài)屬性private void button3_Click(object sender, EventArgs e)Close(); /調(diào)用窗體Form1類的方法Close() 85 事件處理函數(shù)的參數(shù) 事件處理函數(shù)一般有兩個(gè)參數(shù),第一個(gè)參數(shù)(object sender)引用產(chǎn)生該事件的對(duì)象。事件處理
5、函數(shù)第二個(gè)參數(shù)(EventArgs e)代表事件的一些附加信息,事件不同,所代表的信息也不相同。private void button1_Click(object sender, EventArgs e)if(sender=button1)/判斷是否是button1產(chǎn)生的事件label1.ForeColor=Color.Red;elselabel1.ForeColor=Color.Black; button2 選用button1_Click為事件處理函數(shù) 95 文本框(TextBox)控件 常用屬性和事件如下: 屬性Text: 屬性MaxLength: 屬性ReadOnly: 屬性Passwo
6、rdChar: 屬性MultiLine: 屬性ScrollBars: 屬性SelectionLength:屬性SelectionStart: 屬性SelectedText: 屬性AcceptsReturn: 事件TextChanged: 105 文本框(TextBox)控件(續(xù))115 文本框(TextBox)控件(續(xù))/標(biāo)題為求積的按鈕的單擊事件處理函數(shù)如下: private void button1_Click(object sender,EventArgs e) float ss,ee;ss=Convert.ToSingle(textBox1.Text);ee=Convert.ToSin
7、gle(textBox2.Text);textBox3.Text=Convert.ToString(ss*ee); /標(biāo)題為“清空”的按鈕的單擊事件處理函數(shù)如下: private void button2_Click(object sender, EventArgs e)textBox1.Text=;textBox2.Text=;textBox3.Text=;127 Convert類 Convert類中提供了一些靜態(tài)方法,用來把一種類型數(shù)據(jù)轉(zhuǎn)換為另一種類型數(shù)據(jù)。例如:Convert.ToSingle(textBox1.Text)把字符串textBox1.Text轉(zhuǎn)換為單浮點(diǎn)數(shù)。Convert.
8、ToString(3.14)把單浮點(diǎn)數(shù)3.14轉(zhuǎn)換為字符串。其他轉(zhuǎn)換函數(shù)還有:ToInt16(string)、ToInt32(string)、ToByte(char)、ToChar(Byte)、ToChar(int16)、ToDecimal(string)、ToDouble(string)、ToSByte(string)、ToUInt16(string)等。 138 RadioButton和GroupBox控件 RadioButton是單選按鈕控件,多個(gè)RadioButton控件可以為一組,這一組內(nèi)的RadioButton控件只能有一個(gè)被選中。GroupBox控件是一個(gè)容器類控件,在其內(nèi)部可放
9、置其他控件,表示其內(nèi)部的所有控件為一組。一般把RadioButton控件放到GroupBox控件中,表示這些RadioButton控件是一組。有一些特性是互斥的,例如性別,選擇這類特性可用RadioButton和GroupBox控件。GroupBox控件常用屬性屬性只有一個(gè),屬性Text,指定GroupBox控件頂部的標(biāo)題。RadioButton控件常用屬性和事件如下:屬性Text: 屬性Checked: 事件CheckedChanged:事件Click: 148 RadioButton和GroupBox控件 (續(xù))158 RadioButton和GroupBox控件 (續(xù))private v
10、oid radioButton1_CheckedChanged(object sender, EventArgs e)if(radioButton1.Checked)label1.Font=new Font(宋體,label1.Font.Size);/label1顯示的字體變?yōu)樗误w,字體大小不變private void radioButton2_CheckedChanged(object sender, EventArgs e)if(radioButton2.Checked)label1.Font=new Font(黑體,label1.Font.Size); private void radi
11、oButton3_CheckedChanged(object sender, EventArgs e)if(radioButton3.Checked) label1.Font=new Font(楷體_GB2312,label1.Font.Size);169 Font類 Font類有兩個(gè)構(gòu)造函數(shù):第一個(gè)是Font(字體名稱,字號(hào)),例如,label1.Font=new Font(黑體,9),用法還可參考例3.4。第二個(gè)是Font(字體名稱,字號(hào),字體風(fēng)格),其中第三個(gè)參數(shù)是枚舉類型,具體定義如下:enum FontStyle Regular=0, /正常字體Bold=1, /黑體Italic=2
12、, /斜體BoldItalic=3, /黑斜體Underline=4,/下劃線,5=黑體下劃線,6=斜體下劃線,7=黑斜體下劃線Strikeout=8/刪除線,9=黑體刪除線,10=斜體刪除線,依此類推。 179 Font類(續(xù))修改標(biāo)簽控件字體為斜體的兩種方法代碼如下:label1.Font=new Font(“黑體”,9,label1.Font.Style|FontStyle.Italic);/方法1label1.Font=new Font(“黑體”,9,label1.Font.Style|(FontStyle)2); /方法2修改標(biāo)簽控件字體不為斜體的兩種方法代碼如下:label1.Fo
13、nt=new Font(“黑體”,9,label1.Font.Style&FontStyle.Italic);/方法1label1.Font=new Font(“黑體”,9,label1.Font.Style&(FontStyle)(2);/方法2修改其他字體風(fēng)格的代碼類似,請(qǐng)讀者自己實(shí)現(xiàn)。 1810 多選框(CheckBox)控件 CheckBox控件常用屬性和事件如下: l屬性Text:多選框控件旁邊的標(biāo)題。l屬性Checked:布爾變量,為true表示多選框被選中,為false不被選中。l事件Click:單擊多選框控件時(shí)產(chǎn)生的事件。l事件CheckedChanged:多選框控件有被選中和
14、不被選中兩種狀態(tài),該事件是多選框狀態(tài)改變時(shí)產(chǎn)生的事件。 1910 多選框(CheckBox)控件 (續(xù))2010 多選框(CheckBox)控件 (續(xù))例子1:private void checkBox1_CheckedChanged(object sender,EventArgs e)String text1=“你的愛好是:”; /checkBox1是標(biāo)題為音樂的多選框控件if(checkBox1.Checked)text1=text1+checkBox1.Text; /checkBox2是標(biāo)題為文學(xué)的多選框控件if(checkBox2.Checked)text1+=checkBox2.Te
15、xt;label1.Text=text1; 2110 多選框(CheckBox)控件 (續(xù))例子2(界面同例子1)標(biāo)題為“音樂”的多選框控件CheckBox1的CheckedChanged事件處理函數(shù)如下: private void checkBox1_CheckedChanged(object sender, EventArgs e) int n=s.IndexOf(“音樂”);if(n=-1)s+=音樂;elses=s.Remove(n,2);label1.Text=s;2210 多選框(CheckBox)控件 (續(xù))標(biāo)題為文學(xué)多選框控件CheckBox2的CheckedChanged事件
16、處理函數(shù)如下:private void checkBox2_CheckedChanged(object sender, EventArgs e)int n=s.IndexOf(文學(xué));if(n=-1)s+=文學(xué);elses=s.Remove(n,2);label1.Text=s;2311 列表選擇控件(ListBox) 列表選擇控件的常用屬性、事件和方法如下: 屬性Items: 屬性SelectedIndex: 屬性SelectedIndices: 屬性SelectedItem: 屬性SelectedItems: 屬性SelectionMode :屬性Sorted: 方法GetSelected
17、(): 事件SelectedIndexChanged: 在屬性窗口中,單擊Items屬性右側(cè)標(biāo)題為的按鈕,打開字符串集合編輯器對(duì)話框,在其中輸入四項(xiàng):粗體、斜體、下劃線、刪除線,注意每一項(xiàng)要換行。 2411 列表選擇控件(ListBox)(續(xù))2511 列表選擇控件(ListBox)(續(xù))2611 列表選擇控件(ListBox)(續(xù))void listBox1_SelectedIndexChanged(object sender, EventArgs e)int Style=0,k=1;/Style=0正常字體,1=黑體,2=斜體,3=黑斜體等,參見3.9節(jié)for(int i=0;ilistB
18、ox1.Items.Count;i+)/此例Count=4if(listBox1.GetSelected(i)/例如此例GetSelected(0)=true表示粗體選中Style=Style|k;/增加指定風(fēng)格 elseStyle=Style&(k);/取消指定風(fēng)格 k=k*2; FontStyle m=new FontStyle();m=(FontStyle)Style; label1.Font=new Font(label1.Font.Name,label1.Font.Size,m);2712下拉列表組合框(ComboBox)控件 常用屬性、事件和方法如下: 屬性DropDownStyl
19、e: 屬性Items: 屬性MaxDropDownItems:屬性Sorted: 屬性SelectedItem:屬性SelectedIndex: 事件SelectedIndexChanged: 2812下拉列表組合框(ComboBox)控件2912下拉列表組合框(ComboBox)控件private void Form1_Load(object sender,EventArgs e)/Families是類FontFamily的一個(gè)靜態(tài)屬性,得到操作系統(tǒng)中所使用的所有字體名 FontFamily families=FontFamily.Families; foreach (FontFamily
20、family in families)comboBox1.Items.Add(family.Name);/注意Add方法的使用private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)label1.Font=new Font(comboBox1.Text,label1.Font.Size); 3013 ToolTip控件 3113 ToolTip控件 (續(xù))放ToolTip控件到窗體,屬性Name=toolTip1,修改textBox1屬性toolTip1的ToolTip=“這是編輯框”,這是當(dāng)鼠標(biāo)在textB
21、ox1上停留一段時(shí)間后,出現(xiàn)的提示。在Form1的構(gòu)造函數(shù)中,增加語句如下: toolTip1.SetToolTip(button1,“這是按鈕”);/參數(shù)1是要顯示提示的控件,參數(shù)2是提示 3214 超級(jí)鏈接(LinkLable)控件 常用的屬性、方法和事件如下:屬性LinkColor: 屬性VisitedLinkColor: 屬性LinkVisited: 屬性LinkArea: 事件LinkClicked: 3314 超級(jí)鏈接(LinkLable)控件 (續(xù))修改LinkLabel控件屬性LinkArea.Length=2,LinkArea.Start=2。也可在構(gòu)造函數(shù)用語句修改:lin
22、kLabel1.LinkArea=new LinkArea(2,2); private void linkLabel1_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e) linkLabel1.LinkVisited=true; System.Diagnostics.Process.Start(); System.Diagnostics.Process.Start(C:/); System.Diagnostics.Process.Start(notepad); 3415 定時(shí)(Timer)組件 定時(shí)組件常用的屬性、方法和事件如下
23、: 屬性Interval: 屬性Enabled: 方法Start()和Stop(): 事件Tick: 3515 定時(shí)(Timer)組件 (續(xù))void Form1_Load(object sender, EventArgs e)this.timer1.Interval=100;this.timer1.Enabled=true;label1.Text=DateTime.Now.ToString();void timer1_Tick(object sender, EventArgs e) label1.Text=DateTime.Now.ToString(); 3616 DateTime類 Str
24、ing s=DateTime.Now.ToString(); /DateTime.Today.ToString()int y=DateTime.Now.Year;/得到年int m=DateTime.Now.Month;/得到月int d=DateTime.Now.Day;/得到日期String s=DateTime.Now.DayOfWeek.ToString();/英文表示的星期int h=DateTime.Now.Hour;/得到小時(shí)int m=DateTime.Now.Minute;/得到分int s=DateTime.Now.Second;/得到秒/定義一個(gè)DateTime類對(duì)象,表
25、示1999年1月13日3時(shí)57分32.11秒 System.DateTime moment=new System.DateTime(1999,1,13,3,57,32,11);System.DateTime dTime=new System.DateTime(1980,8,5);/1980年8月5日/定義時(shí)間間隔:17天4小時(shí)2分1秒System.TimeSpan tSpan=new System.TimeSpan(17,4,2,1);System.DateTime result=dTime+tSpan;/結(jié)果是:1980年8月22日4:2:1 AM. 3717 菜單 菜單術(shù)語:頂級(jí)菜單項(xiàng) 、
26、彈出菜單 、菜單項(xiàng) 、子菜單 快捷鍵 、加速鍵 可以建立多個(gè)MenuStrip類對(duì)象,指定主窗口的菜單是menuStrip1:this. MainMenuStrip = this.menuStrip1;菜單項(xiàng)常用的屬性和事件如下: 屬性Checked:屬性ShortCutKeys: 屬性ShowShortCutKeys: 屬性Text:菜單項(xiàng)標(biāo)題。如為字符-,為分隔線。打開文件(&0)增加快捷鍵。 事件Click:單擊菜單項(xiàng)事件。設(shè)計(jì)界面: 3817 菜單 (續(xù))3917 菜單 (續(xù))運(yùn)行效果:4017 菜單 (續(xù))private void 紅色ToolStripMenuItem_Click(
27、object sender,EventArgs e)label1.ForeColor=Color.Red; private void 黑色ToolStripMenuItem_Click(object sender,EventArgs e)label1.ForeColor=Color.Black; private void 退出ToolStripMenuItem_Click(object sender,EventArgs e)Close(); 4118 工具條 在工具條中可以放置Button、Label、TextBox、ComboBox、ProGressBar等控件 ,控件ToolStrip常用
28、的屬性如下: 屬性Items:單擊屬性窗口中該屬性后邊標(biāo)題為“”的按鈕,打開“項(xiàng)集合編輯器”對(duì)話框 屬性Dock:工具條中的按鈕都是獨(dú)立的控件,選中工具條中的按鈕,屬性窗體將顯示該控件的屬性和事件。可為按鈕增加事件處理函數(shù)。 4218 工具條 (續(xù))4319 狀態(tài)欄控件 在狀態(tài)欄中可以放置SplitButton、StatusLabel、DropDownButton、ProGressBar等控件。單擊屬性窗口中狀態(tài)欄控件屬性Items后邊標(biāo)題為“”的按鈕,打開“項(xiàng)集合編輯器”對(duì)話框 ,從圖中ComboBox控件的下拉列表中可以選擇放到狀態(tài)欄中的控件,單擊添加按鈕,可以為狀態(tài)欄添加控件。選中左側(cè)列
29、表框中顯示的已添加到狀態(tài)欄中的控件,可以在右側(cè)屬性列表中修改其屬性。為使?fàn)顟B(tài)欄長度保持一定,可修改屬性AutoSize=false,修改屬性Size為指定值。StatusLabel用來在狀態(tài)欄顯示字符,只要修改其Text屬性即可修改顯示的字符。 4419 狀態(tài)欄控件 (續(xù))4519 狀態(tài)欄控件 (續(xù))4619 狀態(tài)欄控件 (續(xù))放Timer組件到窗體,Name=timer1,屬性Interval=1000,Enabled=true。 private void timer1_Tick(object sender,EventArgs e)toolStripStatusLabel1.Text = D
30、ateTime.Now.ToString();/第一欄顯示時(shí)間private void Form1_MouseMove(object sender, MouseEventArgs e)toolStripStatusLabel2.Text=X:+e.X.ToString()+,Y:+e.Y.ToString(); 4720鼠標(biāo)事件和Panel控件 從類System.Windows.Forms.Control派生的控件都有鼠標(biāo)事件,控件的Click事件本質(zhì)上也是鼠標(biāo)事件。一些窗體控件還有單獨(dú)的鼠標(biāo)事件,鼠標(biāo)事件處理函數(shù)一般有兩個(gè)參數(shù),第一個(gè)參數(shù)(object sender)引用產(chǎn)生該事件的對(duì)象,例
31、如為Form1的鼠標(biāo)事件增加事件處理函數(shù),它的第一個(gè)參數(shù)sender引用Form1對(duì)象。(System.Windows.Forms.MouseEventArgs e)是事件處理函數(shù)第二個(gè)參數(shù),代表事件的一些信息,事件不同,所代表的信息也不相同,鼠標(biāo)按下事件處理函數(shù)中,e.X和e.Y為發(fā)生事件時(shí)鼠標(biāo)位置的x和y坐標(biāo),e.Button為MouseButtons.Left,表示單擊了鼠標(biāo)左鍵,為Right和Middle則分別表示單擊了右鍵和中間鍵。e.Clicks為鼠標(biāo)單擊的次數(shù),如果為1次,為單擊,大于1次,則為雙擊。窗體控件包括以下鼠標(biāo)事件: 4820鼠標(biāo)事件和Panel控件(續(xù))MouseDo
32、wn:MouseUp: MouseMove: MouseEnter: MouseLeave: 4920鼠標(biāo)事件和Panel控件 (續(xù)) Panel是一個(gè)可以包含其他控件的控件,例如包含一組RadioButton控件。如果Panel控件的Enabled屬性設(shè)置為false,則也會(huì)禁用包含在Panel中的所有控件。默認(rèn)情況下,Panel控件在顯示時(shí)沒有任何邊框??梢杂肂orderStyle屬性提供標(biāo)準(zhǔn)或三維的邊框,將窗體分為不同區(qū)域。因?yàn)镻anel控件派生于ScrollableControl類,所以可以用AutoScroll屬性來啟用Panel控件中的滾動(dòng)條。當(dāng)AutoScroll屬性設(shè)置為tru
33、e時(shí),使用所提供的滾動(dòng)條可以滾動(dòng)顯示在Panel中,但不在其可視區(qū)域內(nèi)的所有控件。 5021 快捷菜單 快捷菜單和菜單的屬性、事件和方法基本一致,只是快捷菜單沒有頂級(jí)菜單項(xiàng),因此這里就不多介紹了。 5122 綜合例子:計(jì)算器 5222 綜合例子:計(jì)算器 (續(xù))Button1-Button9單擊事件處理函數(shù)如下: private void button0_Click(object sender,EventArgs e)Button b1=(Button)sender;if(textBox1.Text!=0)/如果前邊已輸入非零數(shù)字例如12textBox1.Text+= b1.Text;/此次如鍵
34、入0應(yīng)為:120else/如果已輸入的數(shù)字為零,顯示的數(shù)字應(yīng)為:0,而不應(yīng)為:00textBox1.Text= b1.Text; 5322 綜合例子:計(jì)算器 (續(xù))標(biāo)題為“.”按鈕事件處理函數(shù)如下:private void btn_dot_Click(object sender, EventArgs e) int n=textBox1.Text.IndexOf(.);if(n=-1)/如果沒有小數(shù)點(diǎn),增加小數(shù)點(diǎn),否則不增加textBox1.Text=textBox1.Text+.;編譯,運(yùn)行,單擊標(biāo)題為“0”到9以及.的按鈕,在控件textBox1中可以看到輸入的數(shù)字,也可以輸入小數(shù)。 542
35、2 綜合例子:計(jì)算器 (續(xù))實(shí)現(xiàn)加法。增加一個(gè)變量double sum = 0,記錄部分和。輸入了第一個(gè)加數(shù),然后輸入任一運(yùn)算符(+、-、*、或=),在輸入第二個(gè)加數(shù)前,應(yīng)先清除編輯框中顯示的第一個(gè)加數(shù)。為實(shí)現(xiàn)此功能,為Form1類增加一個(gè)布爾變量blnClear,初始值為false,表示輸入數(shù)字或小數(shù)點(diǎn)前不清除編輯框中顯示,輸入運(yùn)算符(+、-、*、或=)后,blnClear=true,表示如果再輸入數(shù)字或小數(shù)點(diǎn),先清除編輯框中的顯示的前一個(gè)加數(shù)。修改前邊程序,輸入數(shù)字或小數(shù)點(diǎn)前,要判斷變量blnClear,如為true,清除編輯框中顯示的內(nèi)容后,再顯示新輸入的數(shù)字或小數(shù)點(diǎn),同時(shí)修改blnCl
36、ear=false。為此修改Button0單擊事件處理函數(shù)如下: 5522 綜合例子:計(jì)算器 (續(xù))private void button0_Click(object sender,EventArgs e)if(blnClear)/如為真,輸入下一個(gè)加數(shù)前,應(yīng)先清除textBox1顯示內(nèi)容textBox1.Text=0;/新增語句blnClear=false;Button b1=(Button)sender;/以下為原來已有語句if(textBox1.Text!=0)textBox1.Text+= b1.Text;elsetextBox1.Text= b1.Text; 5622 綜合例子:計(jì)算
37、器 (續(xù))修改btn_dot_Click方法如下: private void btn_dot_Click(object sender, EventArgs e)if(blnClear)/如為真,輸入下一個(gè)加數(shù)前應(yīng)先清除textBox1textBox1.Text=0;/新增語句blnClear=false;int n=textBox1.Text.IndexOf(.);if(n=-1)/如果沒有小數(shù)點(diǎn),增加小數(shù)點(diǎn),防止多次輸入小數(shù)點(diǎn)textBox1.Text=textBox1.Text+.;5722 綜合例子:計(jì)算器 (續(xù)) 如果要計(jì)算1+2-3,先單擊標(biāo)題為1的按鈕(簡稱按鈕1),編輯框中顯示1
38、,再單擊按鈕+,執(zhí)行運(yùn)算sum=sum+1(注意此時(shí)sum=0),顯示sum到編輯框中(實(shí)際顯示不變),記住此次輸入的運(yùn)算符,這里為+號(hào)。單擊按鈕2,編輯框中顯示2,再單擊按鈕-,按記錄的運(yùn)算符(這里是+)計(jì)算sum=sum+2,顯示sum到編輯框中,記住此次輸入的運(yùn)算符,這里為-號(hào),依此類推。為實(shí)現(xiàn)此功能,必須定義一個(gè)字符串變量strOper,記錄輸入的運(yùn)算符,初始值為+,保證輸入第一個(gè)運(yùn)算符后,執(zhí)行運(yùn)算sum=sum+第一個(gè)加數(shù),由于初始sum=0,也就是sum=第一個(gè)加數(shù)。標(biāo)題為+的按鈕的單擊事件處理函數(shù)如下: 5822 綜合例子:計(jì)算器 (續(xù))private void btn_add_
39、Click(object sender, EventArgs e)double dbSecond=Convert.ToDouble(textBox1.Text);if(!blnClear)/如果未輸入第二個(gè)操作數(shù),不運(yùn)算, /例如連續(xù)鍵入+、-、*、或=switch(strOper) /按上次記錄的運(yùn)算符號(hào)運(yùn)算case +: sum+=dbSecond;break; /在此語句后邊增加其他運(yùn)算符-、*、的處理代碼if(sender=btn_add) /記錄此次鍵入的運(yùn)算符strOper=+;/在此語句后邊可增加運(yùn)算符-、*、=的處理代碼textBox1.Text=Convert.ToStrin
40、g(sum);/顯示部分和blnClear=true;/設(shè)置標(biāo)記使鍵入另1個(gè)加數(shù)前,要先清除顯示的前個(gè)加數(shù)5922 綜合例子:計(jì)算器 (續(xù))等號(hào)(=)處理語句和+號(hào)處理基本一致,修改標(biāo)題為“+”按鈕的事件函數(shù)如下: private void btn_add_Click(object sender, EventArgs e)double dbSecond=Convert.ToDouble(textBox1.Text);if(!blnClear)/如果未輸入第二個(gè)操作數(shù),不運(yùn)算switch(strOper)/按記錄的運(yùn)算符號(hào)運(yùn)算case +:sum+=dbSecond;break;/在此語句后邊增
41、加其他運(yùn)算符-、*、的處理代碼if(sender=btn_add)strOper=+;if(sender=btn_equ)/為=號(hào)處理增加的語句strOper=;textBox1.Text=Convert.ToString(sum);blnClear=true;6022 綜合例子:計(jì)算器 (續(xù))為標(biāo)題為“C”按鈕增加事件處理函數(shù)如下: private void btn_C_Click(object sender, EventArgs e)textBox1.Text=0;sum=0;blnClear=false;strOper=+;6123 類庫、組件和控件 類庫在軟件開發(fā)行業(yè),軟件開發(fā)者為了簡
42、化和加快程序設(shè)計(jì),都希望利用他人已經(jīng)實(shí)現(xiàn)的代碼。這些可復(fù)用代碼可以用類庫的形式提供給軟件開發(fā)者。類庫是一個(gè)擴(kuò)展名為dll的文件,也稱動(dòng)態(tài)連接庫,在文件中定義了一些類,使用類庫的軟件開發(fā)者可以從這些類創(chuàng)建類的對(duì)象,使用類的方法,或者生成這些類的派生類。使用VS2005可以很容易的創(chuàng)建和使用類庫。 見例子【例3.18】 和【例3.19】 6223 類庫、組件和控件 (續(xù))組件在 .NET Framework 中,組件是實(shí)現(xiàn) System.ComponentModel.IComponent 接口的一個(gè)類,或者是實(shí)現(xiàn)該接口類的直接或間接派生類。System.ComponentModel.Compone
43、nt類實(shí)現(xiàn)了IComponent接口,是所有組件類的基類。組件也以類庫的形式提供給使用者,因此使用VS2005設(shè)計(jì)組件的方法和例3.18相同,只是組件類應(yīng)是System.ComponentModel.Component類的派生類??梢栽诮M件類中定義屬性、事件和方法,由于Component類的支持,在VS2005的工具箱中可以看到組件,在屬性和事件窗口可以看到自定義組件的屬性和事件。VS2005工具箱中的Timer定時(shí)器就是一個(gè)組件。組件和控件增加屬性和事件的方法完全一致,這里就不介紹創(chuàng)建組件的具體步驟了,MSDN中也有相應(yīng)的例子。 6323 類庫、組件和控件 (續(xù))控件 控件也是類,和組件不同
44、,控件實(shí)現(xiàn)了用戶界面,創(chuàng)建Windows 控件有三種常見方案: 復(fù)合控件: 擴(kuò)展控件: 自定義控件:【例3.21】仿真軟件中有許多元器件,例如邏輯電路仿真軟件中包括與門、或門、反向器等元件。用自定義控件來描述這些元器件是很方便的。本例通過實(shí)現(xiàn)反向器的簡單邏輯仿真,說明了用自定義控件設(shè)計(jì)仿真軟件的一些基本技術(shù)。 6423 類庫、組件和控件 (續(xù))GateBase類是所有門電路的基類,完整定義如下: using System;using System.Collections.Generic;using System.Text;using System.Windows.Forms;/Control類
45、所在命名空間using System.Drawing;/輸出圖形必須引入的命名空間, /參見第5章namespace GateLibrarypublic delegate void ChangedEvent(object sender,EventArgs e);/代表類聲明見1.18節(jié)/自定義控件的基類必須為Control6523 類庫、組件和控件 (續(xù))public abstract class GateBase:Control/抽象類,所有門電路的基類/每個(gè)門電路都有若干輸入引腳,一個(gè)輸出引腳。用索引指示器記錄輸入引腳值protected List PinInput=null;/PinIn
46、puti表示第i個(gè)輸入引腳值public int thisint nIndex/索引指示器,見1.20節(jié) get return PinInputnIndex; /如果修改值和已有輸入值相同不修改 set if(PinInputnIndex != value) PinInputnIndex = value; OnInputChanged(EventArgs.Empty); /每當(dāng)門輸入引腳值改變,調(diào)用OnInputChanged事件方法 6623 類庫、組件和控件 (續(xù)) int PinOutput = 0; /門的輸出引腳值public int GateOutput/用定義屬性GateOutp
47、ut得到及修改輸出引腳值 get return PinOutput; set PinOutput = value; /每個(gè)輸出引腳可能連接其它門電路輸入引腳,LinkGate和LinkGateNum記錄這些連接public List LinkGate=null;/輸出引腳連接的其它門public List LinkGateNum=null;/連接的其它門的輸入引腳編號(hào)public event ChangedEvent InputChanged;/聲明一個(gè)事件public virtual void OnInputChanged(EventArgs e) int m=GateLogic();/根據(jù)輸入進(jìn)行邏輯計(jì)算,返回計(jì)算的輸出引腳值 if(PinOutput=m)/如果輸出值沒有改變,退出return;6723 類庫、組件和控件 (續(xù))PinOutput=m;/修改輸出值base.Invalidate();/門輸出=0為紅色,否則為黑色,重畫門電路外觀圖,見5.9.6節(jié)GateBase gate;/修改本輸出連接的其它
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- vb循環(huán)結(jié)構(gòu) 課程設(shè)計(jì)
- 2025西藏日喀則市江孜縣司法局補(bǔ)聘專職人民調(diào)解員1人備考核心題庫及答案解析
- 2025 九年級(jí)語文下冊(cè)名著主題多維度解讀課件
- 高中生對(duì)AI在空間站自主生命維持決策的技術(shù)理解分析課題報(bào)告教學(xué)研究課題報(bào)告
- 2025年智能投影儀便攜與高清五年報(bào)告
- 2025年直播電商供應(yīng)鏈可持續(xù)發(fā)展五年報(bào)告
- 2025湖南衡陽市衡陽縣衛(wèi)健系統(tǒng)招聘專業(yè)技術(shù)人員48人筆試重點(diǎn)試題及答案解析
- 2025年內(nèi)蒙古農(nóng)村商業(yè)銀行管理人員及專業(yè)人才公開招聘備考題庫及1套完整答案詳解
- 2025貴州康體旅投發(fā)展有限公司實(shí)習(xí)生招聘2人考試重點(diǎn)試題及答案解析
- 2025山西朔州市公安局招聘留置看護(hù)崗位輔警260人備考核心題庫及答案解析
- 2026元旦主題班會(huì):馬年猜猜樂猜成語 (共130題)【課件】
- 2026年太原城市職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試題庫匯編
- 倒運(yùn)物料合同范本
- 2026年關(guān)于護(hù)士長工作計(jì)劃4篇
- 2025至2030全球及中國手機(jī)用鋰離子電池行業(yè)調(diào)研及市場前景預(yù)測(cè)評(píng)估報(bào)告
- 甘肅省定西市2023-2024學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末考試試卷(含答案)
- 少年有志歌詞
- 【MOOC】C程序設(shè)計(jì)-西北工業(yè)大學(xué) 中國大學(xué)慕課MOOC答案
- 三角形的內(nèi)角和與外角和教案
- 2020北京豐臺(tái)六年級(jí)(上)期末英語(教師版)
- 建筑冷熱源課程設(shè)計(jì)說明書
評(píng)論
0/150
提交評(píng)論