版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Windows應(yīng)用程序主要內(nèi)容本章主要講解Windows編程基礎(chǔ),學(xué)習(xí)的目標(biāo)包括:理解圖形用戶界面;理解事件驅(qū)動(dòng)的概念;掌握Windows編程步驟;掌握基本的窗體、控件、對(duì)話框、菜單、工具欄和狀態(tài)欄編程;掌握鼠標(biāo)和鍵盤事件及其編程;了解Windows編程相關(guān)概念。
17.1Windows應(yīng)用的基本概念C#可以為Windows操作系統(tǒng)生成多類應(yīng)用,其中最基本的兩類應(yīng)用是基于控制臺(tái)的應(yīng)用和基于GUI(GraphicsUserInterface,圖形用戶界面)的應(yīng)用。基于控制臺(tái)的應(yīng)用程序與MS-DOS應(yīng)用程序非常相象。它們的輸出是基于文本的,不需要用戶圖形界面。盡管在屏幕中基于控制臺(tái)的應(yīng)用程序是包含在一個(gè)窗口中的,但窗口中只顯示文本字符?;贕UI的應(yīng)用采用圖形界面,可以生成窗口,有菜單驅(qū)動(dòng),可以用對(duì)話框作為用戶界面,并且使用標(biāo)準(zhǔn)的Windows類及其操作。FileManager就是典型的基于GUI的應(yīng)用程序的例子。17.1.1Windows應(yīng)用的面向?qū)ο笮?7.1.2Windows應(yīng)用的基本界面17.1.3Windows應(yīng)用的輸入/輸出17.1.4Windows應(yīng)用的事件處理圖17.2消息驅(qū)動(dòng)Windows系統(tǒng)用戶動(dòng)作鍵盤輸入消息循環(huán)隊(duì)列窗口處理函數(shù)函數(shù)1回調(diào)函數(shù)n回調(diào)……圖17.3事件驅(qū)動(dòng)Windows系統(tǒng)用戶動(dòng)作鍵盤輸入(注冊(cè))事件偵聽類—監(jiān)聽處理……函數(shù)1事件處理函數(shù)n事件處理17.2Windows應(yīng)用的開發(fā)步驟.NET中提供了一系列用于編寫基于Windows的應(yīng)用程序的類,其中最主要的是窗口類和控制類。窗口/窗體(WindowsForm)用于創(chuàng)建應(yīng)用程序所需的GUI,可以是窗口(Form)、對(duì)話框(Dialog)或者M(jìn)DI(MultipleDocumentInterface,多文檔界面),對(duì)話框和多文檔界面分別在17.3和17.5小節(jié)中介紹。窗口類和控制類包含在System.Windows.Forms名空間中。設(shè)計(jì)和實(shí)現(xiàn)Windows應(yīng)用的步驟如下:創(chuàng)建窗體(Form)如果需要,創(chuàng)建各種控件,并指定各個(gè)控件在窗體中的布局(Layout)響應(yīng)事件:定義GUI的事件,不同的控件、窗體對(duì)不同事件的處理17.3用戶區(qū)域的WindowsForm控件17.3.1文本類控件文本類控件有兩種,一種是能夠進(jìn)行編輯的,另外一種不能編輯,主要應(yīng)用于文本顯示。文本編輯控件包括TextBox和RichTextBox,前者顯示設(shè)計(jì)時(shí)輸入的文本,它可由用戶在運(yùn)行時(shí)編輯或以編程方式更改;后者使文本能夠以純文本或RTF格式顯示。文本顯示控件則包括Label和LinkedLabel,主要區(qū)別在于Label顯示用戶無(wú)法直接編輯的文本,而LinkedLabel則將文本顯示為Web樣式的鏈接,并在用戶單擊該特殊文本時(shí)觸發(fā)事件,該文本通常是到另一個(gè)窗口或Web站點(diǎn)的鏈接。TextBox和RichTextBox能夠接受用戶的輸入,可以做為用戶與應(yīng)用程序之間的交互,因此通常處理的是TextChanged、MultilineChanged之類的事件,它表示當(dāng)用戶修改了輸入值或者結(jié)束輸入時(shí)應(yīng)該做出反應(yīng)。17.3.2按鈕類控件(1)按鈕按鈕可以發(fā)布命令或者設(shè)置值,包括Button、CheckBox和RadioBox。Button通常用來(lái)啟動(dòng)、停止或中斷進(jìn)程;CheckBox顯示一個(gè)復(fù)選框和一個(gè)文本標(biāo)簽,通常用來(lái)設(shè)置選項(xiàng);RadioBox顯示一個(gè)可打開或關(guān)閉的按鈕。Button通常要處理的是用戶按下該按鈕的事件,例如,最簡(jiǎn)單的動(dòng)作是按下一個(gè)按鈕后關(guān)閉窗體,其代碼如下所示:privatevoidbutton1_Click(objectsender,System.EventArgse){
this.Close();}17.3.2按鈕類控件(2)CheckBox
CheckBox通常用來(lái)設(shè)置選項(xiàng),因此通常處理的是CheckedChanged事件。例如,一個(gè)CheckBox用來(lái)表示是否允許窗體極大化,當(dāng)它的值被改變時(shí),根據(jù)用戶的選擇來(lái)允許或禁止窗體極大化的代碼如下所示:privatevoidchkDisableMax_CheckedChanged(objectsender,
System.EventArgse){
this.MaximizeBox=chkDisableMax.Checked;}17.3.2按鈕類控件(3)RadioBox
RadioBox更常見的用法是將幾個(gè)按鈕分為一組,在該組中每次只能選中其中的一個(gè),根據(jù)用戶的選擇來(lái)決定具體的操作。例如,有兩個(gè)數(shù)據(jù)庫(kù)選擇的RadioBox,一個(gè)表示選擇OleDB數(shù)據(jù)庫(kù),另一個(gè)表示選擇SQLServer數(shù)據(jù)庫(kù),則最簡(jiǎn)單的示意代碼如下:privatevoidOledbB_CheckedChanged(objectsender,System.EventArgse){ if(OledbB.Checked)
MessageBox.Show("你目前選中的是Oledb供應(yīng)程序"); else
MessageBox.Show("你目前選中的是Sql供應(yīng)程序");}17.3.3列表型控件這一類的控件用于從列表中選擇,包括ListBox、CheckedListBox、ComboBox、DomainUpDown、NumericUpDown、ListView、TreeView和DataGrid。ListBox顯示一個(gè)文本項(xiàng)和圖形項(xiàng)(圖標(biāo))列表;CheckedListBox顯示一個(gè)可滾動(dòng)的項(xiàng)列表,每項(xiàng)旁邊都有一個(gè)復(fù)選框;ComboBox顯示一個(gè)下拉式項(xiàng)列表和一個(gè)文本編輯框,它相當(dāng)于一個(gè)ListBox加上一個(gè)TextBox,用戶既可以從下拉列表中選擇一個(gè)已有的項(xiàng),也可以直接在TextBox中編輯輸入新的選項(xiàng);DomainUpDown顯示用戶可用向上和向下按鈕滾動(dòng)的文本項(xiàng)列表;NumericUpDown則顯示用戶可用向上和向下按鈕滾動(dòng)的數(shù)字項(xiàng)列表。ListView在四個(gè)不同視圖之一中顯示項(xiàng),這些視圖包括純文本視圖、帶有小圖標(biāo)的文本視圖、帶有大圖標(biāo)的文本視圖和詳細(xì)信息視圖。TreeView顯示一個(gè)節(jié)點(diǎn)對(duì)象的分層集合,這些節(jié)點(diǎn)對(duì)象由帶有可選復(fù)選框或圖標(biāo)的文本組成。17.3.4日期時(shí)間類控件日期事件類控件用于日期型和時(shí)間類數(shù)據(jù)的設(shè)置,包括DateTimePicker和MonthCalendar,其中DateTimePicker顯示一個(gè)圖形日歷以允許用戶選擇日期或時(shí)間,MonthCalendar顯示一個(gè)圖形日歷以允許用戶選擇日期范圍。還有一個(gè)在GUI中不可見的時(shí)間控件Timer,它相當(dāng)于一個(gè)定時(shí)器,常常用于需要自動(dòng)處理的場(chǎng)合。Timer是按標(biāo)準(zhǔn)時(shí)間間隔引發(fā)事件的控件,該控件是為Windows窗體環(huán)境設(shè)計(jì)的,其時(shí)間間隔的長(zhǎng)度由Interval屬性定義,其值以毫秒為單位。若啟用了該控件,則每個(gè)時(shí)間間隔引發(fā)一個(gè)Tick事件,這是添加要執(zhí)行的代碼的位置。Timer控件的主要方法是Start和Stop,這兩個(gè)方法分別用于打開和關(guān)閉計(jì)時(shí)器,計(jì)時(shí)器在關(guān)閉時(shí)重置,不存在暫停Timer控件的方法。17.3.5對(duì)話框類控件對(duì)話框控件包含了系統(tǒng)定義的幾個(gè)標(biāo)準(zhǔn)對(duì)話框,如顏色選擇、字體選擇、打開文件、存儲(chǔ)文件等,它們的名字和功能如下:ColorDialog顯示允許用戶設(shè)置界面元素顏色的顏色選擇器對(duì)話框;FontDialog顯示允許用戶設(shè)置字體及其屬性的對(duì)話框;OpenFileDialog顯示允許用戶定位文件和選擇文件的對(duì)話框;SaveFileDialog顯示允許用戶保存文件的對(duì)話框;PrintDialog顯示允許用戶選擇打印機(jī)并設(shè)置其屬性的對(duì)話框;PrintPreviewDialog顯示一個(gè)對(duì)話框,該對(duì)話框顯示PrintDocument對(duì)象打印時(shí)的樣子;PageSetUpDialog顯示允許用戶設(shè)置打印頁(yè)面屬性的對(duì)話框。標(biāo)準(zhǔn)對(duì)話框的使用可以通過(guò)窗體設(shè)計(jì)器拖動(dòng)一個(gè)對(duì)話框控件到窗體中,它們?cè)贕UI中是不可見的;也可以自己編程定義一個(gè)標(biāo)準(zhǔn)對(duì)話框的變量并將其實(shí)例化。17.3.5對(duì)話框類控件例子打開存儲(chǔ)文件的對(duì)話框代碼如下:privatevoidSaveLabel_Click(objectsender,System.EventArgse){
MySaveFileDialog.Filter=this.MyOenFileDialog.Filter;
MySaveFileDialog.CreatePrompt=true;
MySaveFileDialog.OverwritePrompt=true;
MySaveFileDialog.RestoreDirectory=true; if(MySaveFileDialog.ShowDialog()==DialogResult.OK) { ResultLabel.Text="你要保存的文件為\n"+
MySaveFileDialog.FileName; }}17.3.6圖形類控件圖形類控件包括用于圖形顯示的PictureBox
和用于圖形存儲(chǔ)的ImageList。PictureBox在一個(gè)框架中顯示圖形文件(如位圖和圖標(biāo))。ImageList用作圖像的儲(chǔ)存庫(kù),該控件及其包含的圖像能夠在應(yīng)用程序之間重復(fù)使用。例如,在一個(gè)名為pictureBox1的PictureBox中打開一個(gè)jpg文件并進(jìn)行顯示的代碼如下所示:17.3.6圖形類控件例子privatevoidpictureBox1_Click(objectsender,System.EventArgse){ //打開目錄對(duì)話框,選中圖片文件
OpenFileDialog
fodlg=newOpenFileDialog();
fodlg.Title="選擇圖片";
fodlg.InitialDirectory=""; //文件過(guò)濾類型
fodlg.Filter="Allfiles(*.*)|*.*|Imagefiles (*.jpg,*.bmp,*.gif)|*.jpg;*.bmp;*.gif";
fodlg.FilterIndex=1;//缺省過(guò)濾文件類型
if(fodlg.ShowDialog()==DialogResult.OK) { pictureBox1.Image=Image.FromFile(fodlg.FileName); //pictureBox1.Image.Size pictureBox1.Size=pictureBox1.Image.Size; pictureBox1.Left=pictureBox1.Top=0; }}17.3.7分組類控件分組類控件用于將其他控件分組,包括Panel、GroupBox和TabControl。Panel將一組控件分組到未標(biāo)記、可滾動(dòng)的框架中;GroupBox將一組控件(如單選按鈕(RadioButton))分組到帶標(biāo)記、不可滾動(dòng)的框架中;TabControl提供一個(gè)選項(xiàng)卡式頁(yè)面以有效地組織和訪問已分組對(duì)象。17.3.8標(biāo)尺類控件標(biāo)尺類控件并不是一個(gè)標(biāo)準(zhǔn)的名稱,在這里我們指的是與標(biāo)尺有關(guān)的一些控件,包括滾動(dòng)條(水平滾動(dòng)條HScrollBar和垂直滾動(dòng)條VScrollBar)、進(jìn)度條(ProgressBar)和TrackBar。TrackBar允許用戶通過(guò)沿標(biāo)尺移動(dòng)“縮略圖”來(lái)設(shè)置標(biāo)尺上的值。Windows窗體的ScrollBar控件用于在應(yīng)用程序或控件中水平或垂直滾動(dòng),以方便地在較長(zhǎng)的項(xiàng)列表或大量信息中轉(zhuǎn)移。因?yàn)闈L動(dòng)條是Windows界面的一種常見元素,所以ScrollBar控件通常與ScrollableControl類的派生控件之外的控件一起使用。HScrollBar和VScrollBar控件的操作不依賴其他控件,并且擁有它們自己的事件集、屬性集和方法集。ScrollBar控件與附加到文本框、列表框、組合框或MDI窗體中的內(nèi)置滾動(dòng)條不同(TextBox控件具有ScrollBars屬性,用以顯示或隱藏附加到該控件中的滾動(dòng)條)。17.3.9其他類控件(1)除了上面按功能進(jìn)行分組的控件以外,還有幾種控件,包括ToolTip、Splitter,HelpProvider,ErrorProvidor和CrystalReportViewer。ToolTip控件在用戶指向控件時(shí)顯示相應(yīng)的、用戶自定義的提示文本,在GUI中不可視。工具提示可與任何控件相關(guān)聯(lián),即在窗體中定義一個(gè)ToolTip控件,它為Windows窗體或其他容器上的多個(gè)控件提供ToolTip屬性。一般為節(jié)省窗體上的空間,可以在按鈕上顯示一個(gè)小圖標(biāo)并用工具提示解釋該按鈕的功能。ToolTip控件的主要方法是SetToolTip()和GetToolTip(),分別用于設(shè)置和獲取為控件顯示的工具提示。Windows窗體HelpProvider控件用于將HTML幫助文件(.htm
文件或由HTMLHelpWorkshop生成的.chm
文件)與Windows應(yīng)用程序相關(guān)聯(lián)。17.3.9其他類控件(2)Windows窗體splitter控件用于在運(yùn)行時(shí)調(diào)整??靠丶拇笮?,常用于一類窗體,這類窗體上的控件所顯示的數(shù)據(jù)長(zhǎng)度可變,如Windows資源管理器,它的數(shù)據(jù)窗格所包含的信息在不同的時(shí)間有不同的寬度。如果一個(gè)控件可由splitter控件調(diào)整其大小,則當(dāng)用戶將鼠標(biāo)指針指向該控件的未停靠的邊緣時(shí),鼠標(biāo)指針將更改外觀,指示該控件的大小是可以調(diào)整的。拆分控件允許用戶調(diào)整該控件緊前面的停靠控件的大小。因此,為使用戶能夠在運(yùn)行時(shí)調(diào)整??靠丶拇笮。?qǐng)將要調(diào)整大小的控件??吭谌萜鞯囊粭l邊緣上,然后將拆分控件??吭谠撊萜鞯耐粋?cè)。17.3.10用戶自定義控件如果標(biāo)準(zhǔn)控件不能滿足用戶的需要,例如,用戶希望控件有特殊的功能或者界面,或者希望某些功能和特定的界面結(jié)合起來(lái),這時(shí),標(biāo)準(zhǔn)控件已經(jīng)不能提供足夠的用法,用戶可以自定義特定的控件來(lái)滿足具體的需求。VisualStudio.Net提供了一個(gè)項(xiàng)目類型ConrolLibrary用于創(chuàng)建用戶自定義控件。用戶可以在已有的控件上進(jìn)行擴(kuò)展以生成自己所需的控件,也可以從頭開始創(chuàng)建一個(gè)控件,包括自己繪制界面。完全從頭開始設(shè)計(jì)、創(chuàng)建自己的控件涉及到的知識(shí)比較多,例如如何繪圖等,比較復(fù)雜。通常更常見的用法是根據(jù)已有的控件進(jìn)行擴(kuò)展或者封裝。17.4非用戶區(qū)域的WindowsForm控件有一些控件不在用戶區(qū)域內(nèi),如菜單項(xiàng)、工具條(ToolBar)、狀態(tài)條(StatuBar)等。StatuBar通常在父窗體的底部使用,由框架窗口顯示該應(yīng)用程序的當(dāng)前狀態(tài)信息。菜單項(xiàng)中的MainMenu提供創(chuàng)建菜單的設(shè)計(jì)時(shí)界面;ContextMenu實(shí)現(xiàn)當(dāng)用戶右擊對(duì)象時(shí)出現(xiàn)的菜單;NotifyIcon在表示正在后臺(tái)運(yùn)行的應(yīng)用程序的任務(wù)欄的狀態(tài)通知區(qū)域中顯示一個(gè)圖標(biāo)。工具條ToolBar包含一個(gè)按鈕(Button)控件的集合。17.
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度二手房出售合同標(biāo)的的市場(chǎng)價(jià)值評(píng)估報(bào)告
- 高校專項(xiàng)計(jì)劃自我介紹五篇
- 公司轉(zhuǎn)正述職報(bào)告模板8篇
- 2024至2030年中國(guó)靜電噴槍配件數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)瓶蓋扭力計(jì)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)汽油機(jī)高壓阻尼線數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)無(wú)跟襪數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年鑄鐵壓緊壓濾機(jī)項(xiàng)目投資價(jià)值分析報(bào)告
- 2024年紙箱機(jī)項(xiàng)目可行性研究報(bào)告
- Unit 1 How tall are you Part C Story time(說(shuō)課稿)-2023-2024學(xué)年人教PEP版英語(yǔ)六年級(jí)下冊(cè)
- 項(xiàng)目主要施工管理人員情況
- 個(gè)人借條電子版模板
- 關(guān)于學(xué)習(xí)“國(guó)語(yǔ)普通話”發(fā)聲亮劍【三篇】
- 玻璃廠應(yīng)急預(yù)案
- 嬰幼兒游戲照料(嬰幼兒回應(yīng)性照護(hù)課件)
- 貨車進(jìn)入車間安全要求
- MAC地址-廠商對(duì)應(yīng)表
- 2022年中國(guó)出版業(yè)總體狀況分析
- BIM大賽題庫(kù)含答案
- 造紙術(shù)學(xué)習(xí)課件
- (完整版)譯林版四年級(jí)上冊(cè)Unit7單元測(cè)試
評(píng)論
0/150
提交評(píng)論