版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第10章WINDOWS窗體應(yīng)用程序保定職業(yè)技術(shù)學(xué)院第10章WINDOWS窗體應(yīng)用程序10.1WINDOWSFORM10.2WINDOWSFORMS命名空間10.3委托與事件10.4事件與消息10.5專題討論與作業(yè)設(shè)計(jì)10.1WINDOWSFORMWindows窗體是.NET框架的一部分,它支持在Windows平臺上構(gòu)建傳統(tǒng)的GUI應(yīng)用程序。Windows窗體提供一套眾多的類,便利了復(fù)雜用戶界面的創(chuàng)建。所有的.NET框架的語言都可以使用這些類。1WindowsForms與程序設(shè)計(jì)微軟在.NET框架中將VB的圖形界面編程模式推廣到其它的編程語言中,如VisualC#.NET、VisualBasic.NET。它們都可以創(chuàng)建WindowsForms的應(yīng)用程序。VisualC#.NET、VisualBasic.NET在創(chuàng)建WindowsForms應(yīng)用程序時(shí)可以使用Designer工具,使編程簡化,自動生成框架代碼。但是VisualC++.NET還不能使用圖形設(shè)計(jì)工具來創(chuàng)建WindowsForms應(yīng)用程序的框架,全部代碼還必須手工編寫。10.1WINDOWSFORM2WindowsForm與MFC傳統(tǒng)的MFC編程和.NET的WindowsFrorms都能夠?qū)崿F(xiàn)圖形界面的應(yīng)用程序,是使用WindowsForms還是使用MFC編程?要根據(jù)具體的情況來決定,下面的情況可以使用MFC編程:原來的MFC項(xiàng)目,但不能將原來的項(xiàng)目移植到WindowsForms的應(yīng)用。使用了基于MFC的COM組件。希望采用MFC的文檔視圖結(jié)構(gòu)。除了上述三種情況外,都可以使用VisualC++.NET的WindowsForms來編寫窗口界面的應(yīng)用程序。10.2WINDOWSFORMS命名空間WindowsForms的類主要有兩個(gè)命名空間:System::Windows::Forms和System::Windows::Forms::design。VisualC++.NET主要使用System::Windows::Forms命名空間。System::Windows::Forms是一個(gè)龐大的命名空間,其中包括了用于創(chuàng)建基于Windows應(yīng)用程序的類,為用戶提供豐富的用戶界面。在程序中使用這個(gè)命名空間,需要在程序中加入下列兩行代碼:#using<system.windows.forms.dll>usingnamespaceSystem::Windows::Forms;10.2WINDOWSFORMS命名空間
1System.Windows.Forms命名空間的分類System::Windows::Forms命名空間包含的類、接口、結(jié)構(gòu)、委托和枚舉等約300個(gè)。為了便于掌握我們可以將它們分為下列幾組:(1)窗體Form類表示應(yīng)用程序內(nèi)的窗口。這包括對話框,無模式窗口和多文檔界面(MDI)客戶端窗口及父窗口。若要創(chuàng)建由其它控件組成的自定義控件,請使用UserControl
類。(2)控件System.Windows.Forms
命名空間提供各種控件類,這些控件類使用戶能夠創(chuàng)建豐富的用戶界面。10.2WINDOWSFORMS命名空間(3)組件除控件之外,System.Windows.Forms
命名空間還提供其它一些類,這些類不是從控件類派生的,但仍然向基于Windows的應(yīng)用程序提供可視化功能。某些類,例如ToolTip和ErrorProvider,擴(kuò)展了這些功能或者向用戶提供信息。還有一些類,比如Menu、MenuItem
和ContextMenu,向用戶提供顯示菜單的能力,以便從應(yīng)用程序內(nèi)調(diào)用命令。Help和HelpProvider
類可使用戶能夠向應(yīng)用程序的用戶顯示幫助信息。10.2WINDOWSFORMS命名空間(4)通用對話框Windows提供許多通用對話框,在執(zhí)行諸如打開和保存文件、操作字體或文字顏色,或打印之類的任務(wù)時(shí),這些通用對話框可用來使應(yīng)用程序具有一致的用戶界面。OpenFileDialog
和SaveFileDialog
類提供顯示對話框的功能,以便允許用戶瀏覽和輸入要打開或保存的文件名稱。FontDialog
類顯示一個(gè)對話框,以更改應(yīng)用程序所使用的Font對象的元素。PageSetupDialog、PrintPreviewDialog
和PrintDialog
類顯示對話框,以便允許用戶控制打印文檔的各個(gè)方面。System.Windows.Forms
命名空間內(nèi)還有許多類,它們?yōu)榍懊嫣峒暗念愄峁┲С?。支持類的示例有枚舉、事件參數(shù)類,以及控件和組件內(nèi)的事件使用的委托。10.2WINDOWSFORMS命名空間2Form類的屬性、方法和事件Form是應(yīng)用程序中顯示的所有窗口的表示形式。Form類可用于創(chuàng)建標(biāo)準(zhǔn)窗口、工具窗口、無邊框窗口和浮動窗口。也可使用Form類創(chuàng)建模式窗口,如對話框。多文檔界面(MDI)窗體這種特殊類型的窗體可包含名為MDI子窗體的其它窗體。通過將IsMdiContainer
屬性設(shè)置為true來創(chuàng)建MDI窗體。通過將MdiParent
屬性設(shè)置為將包含子窗體的MDI父窗體來創(chuàng)建MDI子窗體。Form類的事件使程序員得以響應(yīng)在窗體上執(zhí)行的操作。如MouseDown事件可以處理鼠標(biāo)單擊操作,KeyDown事件可以處理鍵盤按鍵按下操作,可使用Activated事件執(zhí)行一些操作,如在激活窗體時(shí)更新該窗體的控件中顯示的數(shù)據(jù)。10.2WINDOWSFORMS命名空間3FORM應(yīng)用程序?qū)嵗懊娼榻B了WindowsForms命名空間和Form類的屬性、方法和事件,下面我們通過一個(gè)簡單的Windows窗體程序?qū)嵗?,來介紹如何創(chuàng)建Windows窗體應(yīng)用程序以及Form類的屬性、方法與事件的使用。創(chuàng)建一個(gè)托管的Windows窗口應(yīng)用程序,演示Form類的屬性、方法及事件的使用。程序的運(yùn)行界面如下圖:10.2WINDOWSFORMS命名空間10.3委托與事件1委托委托是一種類,它能綁定到托管類中的一個(gè)或多個(gè)方法。這些方法有相同個(gè)數(shù)和類型的函數(shù)變量以及相同的返回?cái)?shù)據(jù)類型。通過委托可以調(diào)用這些方法。委托的名字也由此而來。在其它語言中,與委托最接近的是函數(shù)指針,但函數(shù)指針只能引用Shared函數(shù),而委托可以引用Shared和實(shí)例方法。在后一種情況中,委托不僅存儲對方法入口點(diǎn)的引用,還存儲對用于調(diào)用方法的對象實(shí)例的引用。定義和使用委托分三個(gè)步驟:聲明、實(shí)例化和調(diào)用。(1)聲明一個(gè)委托在托管C++中,用特殊的表示方法來聲明一個(gè)委托,其中使用了關(guān)鍵字__delegate和封裝方法的簽名。10.3委托與事件下面是聲明委托的例子:__delegatevoidDelegateCallback
(int);創(chuàng)建一個(gè)委托時(shí)必須指定一個(gè)回調(diào)方法,該方法必須與委托聲明中的簽名匹配??梢允庆o態(tài)方法也可以是實(shí)例方法。__gcclassX(2)創(chuàng)建一個(gè)委托對象可以象創(chuàng)建任何其它類的對象的實(shí)例一樣,用new操作符創(chuàng)建一個(gè)委托對象。下面的代碼示例了兩個(gè)委托對象的創(chuàng)建。Y*pY=newY;DelegateCallback*pDelegate1,*pDelegate2,*pDelegate3;pDelegate1=newDelegateCallback(0,&X::Function1);//調(diào)用靜態(tài)方法pDelegate2=newDelegateCallback(pY,&Y::Function2);//調(diào)用實(shí)例方法10.3委托與事件(3)調(diào)用一個(gè)委托可以象調(diào)用方法那樣調(diào)用委托。委托對象不是一個(gè)方法,但是它有一個(gè)封裝的方法,委托對象將對它的調(diào)用委托到其封裝的方法,因此得名“委托”。調(diào)用委托的方法如下:pDelegate1->Invoke(10);pDelegate2->Invoke(10);pDelegate3(10);10.3委托與事件(4)合并委托與移除委托委托有一個(gè)調(diào)用方法的列表,它能夠在這個(gè)列表中進(jìn)行多重廣播。當(dāng)調(diào)用這樣的委托時(shí),調(diào)用列表中的方法將一次調(diào)用。委托的一個(gè)強(qiáng)大的特性是可以合并與移除委托調(diào)用列表中的方法。Delegate::Combine和Delegate::Remove靜態(tài)方法用來管理這些調(diào)用列表。Delegate類提供了+=(增加)和-=(移除)操作符。10.3委托與事件2事件事件與委托是不可分割的,事件的處理要以委托為媒介。事件是對象發(fā)送的消息,以發(fā)信號通知操作的發(fā)生。操作可能是由用戶交互(例如鼠標(biāo)單擊)引起的,也可能是由某些其它的程序邏輯觸發(fā)的。引發(fā)(觸發(fā))事件的對象叫做事件發(fā)送方。捕獲事件并對其作出響應(yīng)的對象叫做事件接收方。在事件通訊中,事件發(fā)送方類不知道哪個(gè)對象或方法將接收到(處理)它引發(fā)的事件。所需要的是在源和接收方之間存在一個(gè)媒介(或類似指針的機(jī)制)。.NET框架定義了一個(gè)特殊的類型(Delegate,委托),該類型提供函數(shù)指針的功能。委托是一個(gè)可以對方法進(jìn)行引用的類。與其它的類不同,委托類具有一個(gè)簽名,并且它只能對與其簽名匹配的方法進(jìn)行引用。這樣,委托就等效于一個(gè)類型安全函數(shù)指針或一個(gè)回調(diào)。下面我們介紹如何定義事件以及如何使用委托在事件源與事件接收方之間建立連接。10.4事件與消息事件與消息在Windows操作系統(tǒng)中,消息(Message)是對發(fā)生事件的報(bào)告信息,是Windows的一種數(shù)據(jù)結(jié)構(gòu),其中包括含有消息的編號、消息發(fā)生時(shí)的一些參數(shù),以及處理這個(gè)消息的指針。事件一般由用戶直接對應(yīng)用窗口的交互操作而引起,也可以由程序間的邏輯作用間接產(chǎn)生。當(dāng)一個(gè)事件發(fā)生后,Windows操作系統(tǒng)會將相應(yīng)的消息送到應(yīng)用程序的消息隊(duì)列。然后應(yīng)用程序?qū)⑾l(fā)送到窗口,并對其進(jìn)行處理。在
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流倉儲安全管理及材料盤點(diǎn)制度
- 兼職員工獎懲管理辦法
- 職業(yè)院校教師說課稿實(shí)操指南
- 汽車駕駛員安全考試培訓(xùn)教材
- 常用中藥配伍口訣集錦與應(yīng)用實(shí)例
- 數(shù)學(xué)思維訓(xùn)練心得與學(xué)習(xí)體會分享
- 建筑施工責(zé)任劃分與承諾書模板
- 小學(xué)音樂美術(shù)課堂教學(xué)案例分析
- 農(nóng)田水利安全管理工作計(jì)劃
- 高三模擬英語試題匯編與解析
- 2025年全國爆破工程技術(shù)人員考核試題及答案
- 剖宮產(chǎn)后腹壁切口愈合不良的護(hù)理
- 2026年遼寧農(nóng)業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試必刷測試卷新版
- 2026年湖南吉利汽車職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫及答案1套
- 【語文】上海市黃浦區(qū)上海實(shí)驗(yàn)小學(xué)小學(xué)二年級上冊期末試題(含答案)
- 廣西名校高考模擬2026屆高三上學(xué)期第二次摸底考試數(shù)學(xué)試卷(含答案)
- 醫(yī)院培訓(xùn)課件:《靜配中心審方與分批規(guī)則》
- 2025年擔(dān)保公司個(gè)人年度總結(jié)
- 2025年九年級上學(xué)期期末英語試卷及答案(共三套)
- 三峽集團(tuán)2025招聘筆試真題及答案解析
- 尾礦綜合利用技術(shù)在生態(tài)環(huán)境保護(hù)中的應(yīng)用與經(jīng)濟(jì)效益分析報(bào)告
評論
0/150
提交評論