




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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)包括:理解圖形用戶(hù)界面;理解事件驅(qū)動(dòng)的概念;掌握Windows編程步驟;掌握基本的窗體、控件、對(duì)話(huà)框、菜單、工具欄和狀態(tài)欄編程;掌握鼠標(biāo)和鍵盤(pán)事件及其編程;了解Windows編程相關(guān)概念。
17.1Windows應(yīng)用的基本概念C#可以為Windows操作系統(tǒng)生成多類(lèi)應(yīng)用,其中最基本的兩類(lèi)應(yīng)用是基于控制臺(tái)的應(yīng)用和基于GUI(GraphicsUserInterface,圖形用戶(hù)界面)的應(yīng)用?;诳刂婆_(tái)的應(yīng)用程序與MS-DOS應(yīng)用程序非常相象。它們的輸出是基于文本的,不需要用戶(hù)圖形界面。盡管在屏幕中基于控制臺(tái)的應(yīng)用程序是包含在一個(gè)窗口中的,但窗口中只顯示文本字符?;贕UI的應(yīng)用采用圖形界面,可以生成窗口,有菜單驅(qū)動(dòng),可以用對(duì)話(huà)框作為用戶(hù)界面,并且使用標(biāo)準(zhǔn)的Windows類(lèi)及其操作。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)用戶(hù)動(dòng)作鍵盤(pán)輸入消息循環(huán)隊(duì)列窗口處理函數(shù)函數(shù)1回調(diào)函數(shù)n回調(diào)……圖17.3事件驅(qū)動(dòng)Windows系統(tǒng)用戶(hù)動(dòng)作鍵盤(pán)輸入(注冊(cè))事件偵聽(tīng)類(lèi)—監(jiān)聽(tīng)處理……函數(shù)1事件處理函數(shù)n事件處理17.2Windows應(yīng)用的開(kāi)發(fā)步驟.NET中提供了一系列用于編寫(xiě)基于Windows的應(yīng)用程序的類(lèi),其中最主要的是窗口類(lèi)和控制類(lèi)。窗口/窗體(WindowsForm)用于創(chuàng)建應(yīng)用程序所需的GUI,可以是窗口(Form)、對(duì)話(huà)框(Dialog)或者M(jìn)DI(MultipleDocumentInterface,多文檔界面),對(duì)話(huà)框和多文檔界面分別在17.3和17.5小節(jié)中介紹。窗口類(lèi)和控制類(lèi)包含在System.Windows.Forms名空間中。設(shè)計(jì)和實(shí)現(xiàn)Windows應(yīng)用的步驟如下:創(chuàng)建窗體(Form)如果需要,創(chuàng)建各種控件,并指定各個(gè)控件在窗體中的布局(Layout)響應(yīng)事件:定義GUI的事件,不同的控件、窗體對(duì)不同事件的處理17.3用戶(hù)區(qū)域的WindowsForm控件17.3.1文本類(lèi)控件文本類(lèi)控件有兩種,一種是能夠進(jìn)行編輯的,另外一種不能編輯,主要應(yīng)用于文本顯示。文本編輯控件包括TextBox和RichTextBox,前者顯示設(shè)計(jì)時(shí)輸入的文本,它可由用戶(hù)在運(yùn)行時(shí)編輯或以編程方式更改;后者使文本能夠以純文本或RTF格式顯示。文本顯示控件則包括Label和LinkedLabel,主要區(qū)別在于Label顯示用戶(hù)無(wú)法直接編輯的文本,而LinkedLabel則將文本顯示為Web樣式的鏈接,并在用戶(hù)單擊該特殊文本時(shí)觸發(fā)事件,該文本通常是到另一個(gè)窗口或Web站點(diǎn)的鏈接。TextBox和RichTextBox能夠接受用戶(hù)的輸入,可以做為用戶(hù)與應(yīng)用程序之間的交互,因此通常處理的是TextChanged、MultilineChanged之類(lèi)的事件,它表示當(dāng)用戶(hù)修改了輸入值或者結(jié)束輸入時(shí)應(yīng)該做出反應(yīng)。17.3.2按鈕類(lèi)控件(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è)可打開(kāi)或關(guān)閉的按鈕。Button通常要處理的是用戶(hù)按下該按鈕的事件,例如,最簡(jiǎn)單的動(dòng)作是按下一個(gè)按鈕后關(guān)閉窗體,其代碼如下所示:privatevoidbutton1_Click(objectsender,System.EventArgse){
this.Close();}17.3.2按鈕類(lèi)控件(2)CheckBox
CheckBox通常用來(lái)設(shè)置選項(xiàng),因此通常處理的是CheckedChanged事件。例如,一個(gè)CheckBox用來(lái)表示是否允許窗體極大化,當(dāng)它的值被改變時(shí),根據(jù)用戶(hù)的選擇來(lái)允許或禁止窗體極大化的代碼如下所示:privatevoidchkDisableMax_CheckedChanged(objectsender,
System.EventArgse){
this.MaximizeBox=chkDisableMax.Checked;}17.3.2按鈕類(lèi)控件(3)RadioBox
RadioBox更常見(jiàn)的用法是將幾個(gè)按鈕分為一組,在該組中每次只能選中其中的一個(gè),根據(jù)用戶(hù)的選擇來(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列表型控件這一類(lèi)的控件用于從列表中選擇,包括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,用戶(hù)既可以從下拉列表中選擇一個(gè)已有的項(xiàng),也可以直接在TextBox中編輯輸入新的選項(xiàng);DomainUpDown顯示用戶(hù)可用向上和向下按鈕滾動(dòng)的文本項(xiàng)列表;NumericUpDown則顯示用戶(hù)可用向上和向下按鈕滾動(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í)間類(lèi)控件日期事件類(lèi)控件用于日期型和時(shí)間類(lèi)數(shù)據(jù)的設(shè)置,包括DateTimePicker和MonthCalendar,其中DateTimePicker顯示一個(gè)圖形日歷以允許用戶(hù)選擇日期或時(shí)間,MonthCalendar顯示一個(gè)圖形日歷以允許用戶(hù)選擇日期范圍。還有一個(gè)在GUI中不可見(jiàn)的時(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è)方法分別用于打開(kāi)和關(guān)閉計(jì)時(shí)器,計(jì)時(shí)器在關(guān)閉時(shí)重置,不存在暫停Timer控件的方法。17.3.5對(duì)話(huà)框類(lèi)控件對(duì)話(huà)框控件包含了系統(tǒng)定義的幾個(gè)標(biāo)準(zhǔn)對(duì)話(huà)框,如顏色選擇、字體選擇、打開(kāi)文件、存儲(chǔ)文件等,它們的名字和功能如下:ColorDialog顯示允許用戶(hù)設(shè)置界面元素顏色的顏色選擇器對(duì)話(huà)框;FontDialog顯示允許用戶(hù)設(shè)置字體及其屬性的對(duì)話(huà)框;OpenFileDialog顯示允許用戶(hù)定位文件和選擇文件的對(duì)話(huà)框;SaveFileDialog顯示允許用戶(hù)保存文件的對(duì)話(huà)框;PrintDialog顯示允許用戶(hù)選擇打印機(jī)并設(shè)置其屬性的對(duì)話(huà)框;PrintPreviewDialog顯示一個(gè)對(duì)話(huà)框,該對(duì)話(huà)框顯示PrintDocument對(duì)象打印時(shí)的樣子;PageSetUpDialog顯示允許用戶(hù)設(shè)置打印頁(yè)面屬性的對(duì)話(huà)框。標(biāo)準(zhǔn)對(duì)話(huà)框的使用可以通過(guò)窗體設(shè)計(jì)器拖動(dòng)一個(gè)對(duì)話(huà)框控件到窗體中,它們?cè)贕UI中是不可見(jiàn)的;也可以自己編程定義一個(gè)標(biāo)準(zhǔn)對(duì)話(huà)框的變量并將其實(shí)例化。17.3.5對(duì)話(huà)框類(lèi)控件例子打開(kāi)存儲(chǔ)文件的對(duì)話(huà)框代碼如下: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圖形類(lèi)控件圖形類(lèi)控件包括用于圖形顯示的PictureBox
和用于圖形存儲(chǔ)的ImageList。PictureBox在一個(gè)框架中顯示圖形文件(如位圖和圖標(biāo))。ImageList用作圖像的儲(chǔ)存庫(kù),該控件及其包含的圖像能夠在應(yīng)用程序之間重復(fù)使用。例如,在一個(gè)名為pictureBox1的PictureBox中打開(kāi)一個(gè)jpg文件并進(jìn)行顯示的代碼如下所示:17.3.6圖形類(lèi)控件例子privatevoidpictureBox1_Click(objectsender,System.EventArgse){ //打開(kāi)目錄對(duì)話(huà)框,選中圖片文件
OpenFileDialog
fodlg=newOpenFileDialog();
fodlg.Title="選擇圖片";
fodlg.InitialDirectory=""; //文件過(guò)濾類(lèi)型
fodlg.Filter="Allfiles(*.*)|*.*|Imagefiles (*.jpg,*.bmp,*.gif)|*.jpg;*.bmp;*.gif";
fodlg.FilterIndex=1;//缺省過(guò)濾文件類(lèi)型
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分組類(lèi)控件分組類(lèi)控件用于將其他控件分組,包括Panel、GroupBox和TabControl。Panel將一組控件分組到未標(biāo)記、可滾動(dòng)的框架中;GroupBox將一組控件(如單選按鈕(RadioButton))分組到帶標(biāo)記、不可滾動(dòng)的框架中;TabControl提供一個(gè)選項(xiàng)卡式頁(yè)面以有效地組織和訪(fǎng)問(wèn)已分組對(duì)象。17.3.8標(biāo)尺類(lèi)控件標(biāo)尺類(lèi)控件并不是一個(gè)標(biāo)準(zhǔn)的名稱(chēng),在這里我們指的是與標(biāo)尺有關(guān)的一些控件,包括滾動(dòng)條(水平滾動(dòng)條HScrollBar和垂直滾動(dòng)條VScrollBar)、進(jìn)度條(ProgressBar)和TrackBar。TrackBar允許用戶(hù)通過(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界面的一種常見(jiàn)元素,所以ScrollBar控件通常與ScrollableControl類(lèi)的派生控件之外的控件一起使用。HScrollBar和VScrollBar控件的操作不依賴(lài)其他控件,并且擁有它們自己的事件集、屬性集和方法集。ScrollBar控件與附加到文本框、列表框、組合框或MDI窗體中的內(nèi)置滾動(dòng)條不同(TextBox控件具有ScrollBars屬性,用以顯示或隱藏附加到該控件中的滾動(dòng)條)。17.3.9其他類(lèi)控件(1)除了上面按功能進(jìn)行分組的控件以外,還有幾種控件,包括ToolTip、Splitter,HelpProvider,ErrorProvidor和CrystalReportViewer。ToolTip控件在用戶(hù)指向控件時(shí)顯示相應(yīng)的、用戶(hù)自定義的提示文本,在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其他類(lèi)控件(2)Windows窗體splitter控件用于在運(yùn)行時(shí)調(diào)整停靠控件的大小,常用于一類(lèi)窗體,這類(lèi)窗體上的控件所顯示的數(shù)據(jù)長(zhǎng)度可變,如Windows資源管理器,它的數(shù)據(jù)窗格所包含的信息在不同的時(shí)間有不同的寬度。如果一個(gè)控件可由splitter控件調(diào)整其大小,則當(dāng)用戶(hù)將鼠標(biāo)指針指向該控件的未停靠的邊緣時(shí),鼠標(biāo)指針將更改外觀(guān),指示該控件的大小是可以調(diào)整的。拆分控件允許用戶(hù)調(diào)整該控件緊前面的停靠控件的大小。因此,為使用戶(hù)能夠在運(yùn)行時(shí)調(diào)整??靠丶拇笮?,請(qǐng)將要調(diào)整大小的控件停靠在容器的一條邊緣上,然后將拆分控件停靠在該容器的同一側(cè)。17.3.10用戶(hù)自定義控件如果標(biāo)準(zhǔn)控件不能滿(mǎn)足用戶(hù)的需要,例如,用戶(hù)希望控件有特殊的功能或者界面,或者希望某些功能和特定的界面結(jié)合起來(lái),這時(shí),標(biāo)準(zhǔn)控件已經(jīng)不能提供足夠的用法,用戶(hù)可以自定義特定的控件來(lái)滿(mǎn)足具體的需求。VisualStudio.Net提供了一個(gè)項(xiàng)目類(lèi)型ConrolLibrary用于創(chuàng)建用戶(hù)自定義控件。用戶(hù)可以在已有的控件上進(jìn)行擴(kuò)展以生成自己所需的控件,也可以從頭開(kāi)始創(chuàng)建一個(gè)控件,包括自己繪制界面。完全從頭開(kāi)始設(shè)計(jì)、創(chuàng)建自己的控件涉及到的知識(shí)比較多,例如如何繪圖等,比較復(fù)雜。通常更常見(jiàn)的用法是根據(jù)已有的控件進(jìn)行擴(kuò)展或者封裝。17.4非用戶(hù)區(qū)域的WindowsForm控件有一些控件不在用戶(hù)區(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)用戶(hù)右擊對(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)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆上海市嘉定區(qū)物理高一下期末質(zhì)量跟蹤監(jiān)視試題含解析
- 四川省遂寧第二中學(xué)2025屆高一物理第二學(xué)期期末經(jīng)典模擬試題含解析
- 山東、湖北省部分重點(diǎn)中學(xué)2025年高二物理第二學(xué)期期末統(tǒng)考試題含解析
- 2025年湖北省宜昌二中物理高二第二學(xué)期期末復(fù)習(xí)檢測(cè)試題含解析
- 2025年江西科技學(xué)院附屬中學(xué)物理高二第二學(xué)期期末監(jiān)測(cè)模擬試題含解析
- NADH氧化還原調(diào)控-洞察及研究
- 數(shù)據(jù)中心文件遷移實(shí)踐-洞察闡釋
- 重慶市江津巴縣長(zhǎng)壽等七校聯(lián)盟2025屆物理高一下期末質(zhì)量檢測(cè)模擬試題含解析
- 網(wǎng)絡(luò)功能虛擬化部署-洞察闡釋
- 自監(jiān)督學(xué)習(xí)在語(yǔ)言模型優(yōu)化中的應(yīng)用-洞察闡釋
- 2025年校長(zhǎng)職級(jí)考試題及答案
- 國(guó)家能源集團(tuán)采購(gòu)管理規(guī)定及實(shí)施辦法知識(shí)試卷
- 2023-2024學(xué)年四川省成都市高新區(qū)八年級(jí)(下)期末數(shù)學(xué)試卷
- 2025年廣西繼續(xù)教育公需科目考試試題和答案
- 2024年廣州市南沙區(qū)社區(qū)專(zhuān)職招聘考試真題
- 心理健康科普常識(shí)課件
- 山東醫(yī)藥技師學(xué)院招聘筆試真題2024
- 奶茶公司供應(yīng)鏈管理制度
- 加氣站風(fēng)控分級(jí)管理制度
- 物業(yè)消防培訓(xùn)教學(xué)課件
- 2025年航空安全管理專(zhuān)業(yè)考試試卷及答案
評(píng)論
0/150
提交評(píng)論