第10章+Windows控件開發(fā)進(jìn)階.ppt_第1頁
第10章+Windows控件開發(fā)進(jìn)階.ppt_第2頁
第10章+Windows控件開發(fā)進(jìn)階.ppt_第3頁
第10章+Windows控件開發(fā)進(jìn)階.ppt_第4頁
第10章+Windows控件開發(fā)進(jìn)階.ppt_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第10章 Windows控件開發(fā)進(jìn)階,在前一章中介紹了Windows窗體應(yīng)用程序開發(fā)的基礎(chǔ)知識(shí),以及一些常用控件的用法。本章將會(huì)介紹一些更高級(jí)的內(nèi)容。掌握這些內(nèi)容將會(huì)使WinForms程序界面變得更美觀、實(shí)用和動(dòng)態(tài)。同時(shí)也能處理更多復(fù)雜的問題。本章主要涉及到的知識(shí)點(diǎn)有: 熟悉菜單和工具欄設(shè)計(jì)。 編寫單文檔界面程序和多文檔界面程序。 了解窗體的模式,編寫自定義對(duì)話框。 熟悉Timer控件和日期類控件的用法。 熟悉容器控件的用法。,10.1 菜單和工具欄,菜單和工具欄幾乎是所有窗體應(yīng)用程序必不可少的一部分,通過菜單和工具欄的設(shè)計(jì),可以使整個(gè)應(yīng)用程序邏輯清晰,結(jié)構(gòu)明了。菜單和工具欄也都屬于控件的范疇

2、,本章將講解菜單和工具欄的用法。,10.1.1 菜單和點(diǎn)菜,【本節(jié)示例參考:源代碼chapter1010.1.1MenuExample】 先了解一下實(shí)際應(yīng)用中的菜單,在餐館中,菜單是各種菜式的羅列與展示;在網(wǎng)站上,菜單是網(wǎng)站功能的集合與用戶導(dǎo)航;在窗體程序中,菜單一樣是程序功能的匯總與分類。如圖10.1展示了各式各樣的菜單。 Windows開發(fā)用戶界面設(shè)計(jì)中一個(gè)非常重要的部分就是菜單,從Visual C# 2005開始,菜單的創(chuàng)建就通過MenuStrip控件來實(shí)現(xiàn),此控件聚合了菜單的各種樣式,從而使我們編寫菜單變得更加容易。圖10.2展示了Visual C# 2008工具箱中的菜單和工具欄選項(xiàng)

3、卡。,10.1.2 其他菜單項(xiàng),【本節(jié)示例參考:源代碼chapter1010.1.1MenuExample】 可以看到,菜單項(xiàng)除了MenuItem,還有TextBox、ComboBox和Separator。其中除了Separator外,其他項(xiàng)都可以在一級(jí)菜單中出現(xiàn)。 TextBox菜單可以用于接受用戶的輸入,比如說用戶查找、信息搜索等。ComboBox菜單提供一個(gè)下拉列表,可以通過選擇下拉列表觸發(fā)不同的事件。如圖10.7所示為添加了文本框和下拉列表的菜單效果。 Separator分割條菜單項(xiàng)用于分割同一級(jí)的菜單項(xiàng),使菜單結(jié)構(gòu)更清晰,如圖10.8所示。“打開”菜單項(xiàng)和“保存”菜單項(xiàng)之間,以及“另

4、存為”菜單項(xiàng)和“退出”菜單項(xiàng)之間,都加了一個(gè)Separator分割條菜單項(xiàng)。,10.1.3 上下文菜單,【本節(jié)示例參考:源代碼chapter1010.1.3ContextMenuStripExample】 上下文菜單是C#中的另外一種菜單,又叫彈出菜單或右鍵菜單,是在右鍵單擊相應(yīng)的控件時(shí)彈出的菜單。ContextMenuStrip控件提供了與某個(gè)控件關(guān)聯(lián)的快捷操作。為了演示上下文菜單的應(yīng)用,現(xiàn)創(chuàng)建一個(gè)Windows應(yīng)用程序,添加一個(gè)菜單控件MenuStrip和一個(gè)文本框TextBox,設(shè)計(jì)好控件布局,如圖10.10所示。 下面給文本框添加上下文菜單,在Visual Studio的工具箱中選擇上

5、下文菜單工具ContextMenuStrip,將其添加到窗體,編輯菜單項(xiàng)的方法跟上一節(jié)的類似。下面給上下文菜單添加“復(fù)制”、“剪切”、“粘貼”三個(gè)菜單項(xiàng)。,10.1.4 添加工具欄,【本節(jié)示例參考:源代碼chapter1010.1.4ToolBarExample】 工具欄是一組圖形化的按鈕,提供了菜單的快捷訪問,工具欄可以整合軟件中常用的操作,增強(qiáng)軟件的易用性。在常用的軟件系統(tǒng)中,工具欄的使用范圍相當(dāng)廣,圖10.11所示是網(wǎng)頁瀏覽器Firefox的界面效果,其中工具欄起到很重要的導(dǎo)航作用。再如圖10.12所示是文字編輯軟件Word的常用工具欄界面效果,Word提供了更加豐富的工具欄,極大地方便

6、了用戶操作。下面通過一個(gè)實(shí)例演示工具欄的應(yīng)用。,10.2 SDI和MDI窗體程序,Windows應(yīng)用程序是由一個(gè)個(gè)的窗體組成的程序,根據(jù)窗體之間的關(guān)系,一般將窗體應(yīng)用程序分為三類:?jiǎn)挝臋n界面(SDI)應(yīng)用程序、多文檔界面(MDI)應(yīng)用程序和對(duì)話框應(yīng)用程序。本節(jié)將對(duì)這三種應(yīng)用程序的形式分別進(jìn)行介紹。,10.2.1 SDI應(yīng)用程序,【本節(jié)示例參考:源代碼chapter1010.2.1SDIExample】 單文檔界面SDI(Single Document Interface)應(yīng)用程序。顧名思義,即一個(gè)文檔充當(dāng)一個(gè)應(yīng)用程序的主界面。如果再創(chuàng)建一個(gè)文檔,則是另一個(gè)實(shí)例了。單文檔界面的應(yīng)用程序軟件是非常

7、普遍的,Windows的寫字板就是一個(gè)典型的單文檔界面程序,如圖10.13所示。同樣,記事本也是單文檔界面程序,如圖10.14所示。,10.2.2 MDI應(yīng)用程序,【本節(jié)示例參考:源代碼chapter1010.2.2MDIExample】 多文檔界面(MDI)應(yīng)用程序用于同時(shí)顯示多個(gè)文檔,每個(gè)文檔顯示在各自的窗體中。即在一個(gè)MDI應(yīng)用程序中,主窗體文檔可以包括多個(gè)子窗體。如圖10.18所示,為一個(gè)MDI應(yīng)用程序。 可以看到,一個(gè)程序可以有很多窗口。通常,這類程序有一個(gè)主窗口,主窗口中可以生成很多子窗口。主窗口的菜單中通常有窗口操作的菜單,如圖10.19所示。在這個(gè)菜單中顯示所有的窗口、活動(dòng)的窗

8、口以及窗口的顯示方式等。,10.2.3 對(duì)話框應(yīng)用程序,【本節(jié)示例參考:源代碼chapter1010.2.3DialogExample】 對(duì)話框是一種特殊的窗體,用于跟用互交互或者傳遞信息。對(duì)話框的FormBorderStyle屬性為FixedDialog,用戶可以通過一般的窗體構(gòu)建對(duì)話框,同時(shí)也可以像在窗體中添加控件一樣,在對(duì)話框中添加控件和布局控件樣式。同時(shí),.NET Framework還包含了一些常用的對(duì)話框,開發(fā)人員可以直接將其修改之后,應(yīng)用于自己的應(yīng)用程序。 在上一章節(jié),已經(jīng)學(xué)習(xí)了幾個(gè)常用的.NET Framework預(yù)定義對(duì)話框,如ColorDialog在此就不再介紹了。接下來我們

9、實(shí)現(xiàn)自定義對(duì)話框,使用自定義對(duì)話框的好處是用戶可以自定義對(duì)話框顯示的內(nèi)容,實(shí)現(xiàn)特殊的功能。,10.3 WinForms高級(jí)控件,Windows窗體應(yīng)用程序以其簡(jiǎn)單可操作性著稱,除了前面介紹的常用控件而外,C#還提供了其他功能豐富的控件供開發(fā)人員使用。在本節(jié)將介紹幾個(gè)功能強(qiáng)大的控件的用法。,10.3.1 日歷控件-MonthCalendar,【本節(jié)示例參考:源代碼chapter1010.3.1MonthCalendarExample】 日歷控件MonthCalendar用于顯示日期和選擇日期,可以通過日歷控件得到當(dāng)前的日期,也可以得到用戶選擇的日期。下面通過一個(gè)簡(jiǎn)單的實(shí)例來介紹MonthCale

10、ndar的用法。 (1)創(chuàng)建Windows應(yīng)用程序,向窗體中添加一個(gè)MonthCalendar控件,添加5個(gè)標(biāo)簽控件,如圖10.35所示。 (2)編寫代碼,當(dāng)窗體加載的時(shí)候,顯示當(dāng)前日期,程序代碼如下: private void Form1_Load(object sender, EventArgs e) /窗體加載 /將每個(gè)標(biāo)簽的“Text“屬性設(shè)置為不同格式的時(shí)間 this.label1.Text = this.monthCalendar1.TodayDate.ToString(); this.label2.Text = this.monthCalendar1.TodayDate.ToLo

11、ngDateString(); this.label3.Text = this.monthCalendar1.TodayDate.ToShortDateString(); this.label4.Text = 開始日期: + this.monthCalendar1.SelectionStart.ToString(); this.label5.Text = 結(jié)束日期: + this.monthCalendar1.SelectionEnd.ToString(); ,10.3.2 日期選擇控件-DateTimePicker,【本節(jié)示例參考:源代碼chapter1010.3.2DateTimePick

12、erExample】 日歷控件除了MonthCalendar外,還有DateTimePicker控件。跟MonthCalendar控件不同的是,DateTimePicker控件只能選擇一個(gè)日期,而不是連續(xù)的日期段。 通過DateTimePicker控件的Value屬性即可獲得當(dāng)前選擇的時(shí)間值。下面通過一個(gè)實(shí)例來演示該控件的用法?,F(xiàn)創(chuàng)建一個(gè)Windows應(yīng)用程序,設(shè)計(jì)窗體界面如圖10.37所示。 當(dāng)選擇DateTimePicker控件的時(shí)間改變時(shí),文本框中將顯示相應(yīng)的時(shí)間值。這需要觸發(fā)DateTimePicker控件的ValueChanged事件,編寫事件處理程序代碼如下: private vo

13、id dateTimePicker1_ValueChanged(object sender, EventArgs e) this.txtDateTime.Text = this.dateTimePicker1.Value.ToString(); ,10.3.3 計(jì)時(shí)器控件-Timer,【本節(jié)示例參考:源代碼chapter1010.3.3TimerExample】 計(jì)時(shí)器控件用于在一定的時(shí)間間隔調(diào)用一段程序代碼。現(xiàn)實(shí)中經(jīng)常會(huì)遇到這樣的情況,比如鬧鐘每隔1秒鐘走動(dòng)一次,動(dòng)畫片每隔幾毫秒時(shí)間切換一幀圖像等。這些都可以在程序中實(shí)現(xiàn),只要添加一個(gè)計(jì)時(shí)器即可。 Timer控件有兩個(gè)屬性非常重要,一個(gè)是In

14、terval,用于設(shè)置間隔的時(shí)間,以毫秒為單位;一個(gè)是Enabled,當(dāng)設(shè)置為False時(shí),計(jì)時(shí)器失效,為True則計(jì)時(shí)器有效。同時(shí),Timer還提供了一個(gè)Tick事件,每隔Interval設(shè)置的時(shí)間間隔,程序就會(huì)觸發(fā)一次Tick事件。 下面通過一個(gè)倒計(jì)時(shí)的例子來學(xué)習(xí)Timer的應(yīng)用。程序?qū)崿F(xiàn)的功能是:在一個(gè)Label標(biāo)簽中顯示一個(gè)數(shù)字,這個(gè)數(shù)字從10開始倒計(jì)時(shí),每隔1秒,數(shù)字減1,當(dāng)數(shù)字減少到1的時(shí)候,顯示一個(gè)感嘆號(hào),同時(shí)計(jì)時(shí)器停止。,10.3.4 面板控件-Panel,【本節(jié)示例參考:源代碼chapter1010.3.4ContainerExample】 Panel面板控件是一種類似于Gr

15、oupBox的容器控件,用于為其他控件提供可識(shí)別的分組。使用面板控件的主要功能是細(xì)分窗體,使得界面設(shè)計(jì)更加靈活美觀。Panel控件的使用也非常靈活,常用的做法就是將面板添加到主窗體,然后可以在面板中裝載更多的控件。下面通過一個(gè)簡(jiǎn)單的程序?qū)嵗齺硌菔綪anel控件的應(yīng)用,通過Panel控件的顯示和隱藏效果來簡(jiǎn)化界面,達(dá)到簡(jiǎn)潔美觀的目的。,10.3.5 選項(xiàng)卡控件-TabControl,【本節(jié)示例參考:源代碼chapter1010.3.5TabControlExample】 選項(xiàng)卡控件的應(yīng)用在Windows程序中非常普遍,如圖10.49為在Windows操作系統(tǒng)中,查看“我的電腦”屬性的窗體,和查看

16、“桌面”屬性的窗體。其中都用到選項(xiàng)卡控件。,10.4 小結(jié),本章是WinForms控件操作的進(jìn)階篇,分別向讀者展示了幾種更常用的控件。通過本章,我們學(xué)習(xí)了以下內(nèi)容。 (1)菜單是程序常用的功能導(dǎo)航方式。WinForms提供了菜單控件MenuStrip,和上下文菜單控件ContextMenuStrip。 (2)工具欄為程序常用的操作提供了便捷訪問的功能,WinForms提供了ToolStrip控件用于實(shí)現(xiàn)工具欄。 (3)窗體應(yīng)用程序分為單文檔界面(SDI)應(yīng)用程序、多文檔界面(MDI)應(yīng)用程序和對(duì)話框應(yīng)用程序。 (4)MonthCalendar控件和DateTimePicker控件都是用于日期類型的選擇。 (5)Timer計(jì)時(shí)器控件能夠在一段時(shí)間間隔后重復(fù)調(diào)用一段代碼,以此實(shí)現(xiàn)許多動(dòng)態(tài)效果。 (6)Panel控件和TabControl控件都是容器控件,容器控件用于方便靈活的布局窗體界面。,本章習(xí)題,一、選擇題 1在設(shè)計(jì)菜單時(shí),若希望某個(gè)菜單項(xiàng)前面有一個(gè)“”號(hào),應(yīng)把該菜單項(xiàng)的( )屬性設(shè)置為true AChecked BRadioCheck CShowShortcut DEnabled 2C#程序中,為使變量myForm 引用的窗體對(duì)象顯示為對(duì)話框,必

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論