Windows窗體界面設(shè)計(jì)_第1頁
Windows窗體界面設(shè)計(jì)_第2頁
Windows窗體界面設(shè)計(jì)_第3頁
Windows窗體界面設(shè)計(jì)_第4頁
Windows窗體界面設(shè)計(jì)_第5頁
已閱讀5頁,還剩78頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1WindowsWindows窗體界面設(shè)計(jì)窗體界面設(shè)計(jì) 1 1 窗體、屬性與事件窗體、屬性與事件2 2 Windows Windows窗體基本控件窗體基本控件3 3 菜單與工具欄菜單與工具欄 4 4 其他其他WindowsWindows窗體控件窗體控件 2 本章教學(xué)目的介紹介紹WindowsWindows窗體基本設(shè)計(jì)方法以及基本控件的用法。窗體基本設(shè)計(jì)方法以及基本控件的用法。 本章教學(xué)要求(1 1)掌握基本控件的屬性設(shè)置方法以及常用屬性;)掌握基本控件的屬性設(shè)置方法以及常用屬性;(2 2)掌握基本控件的常用事件處理方法;)掌握基本控件的常用事件處理方法;(3 3)掌握菜單與工具欄的用法;)掌握

2、菜單與工具欄的用法; (4 4)了解其他內(nèi)容。)了解其他內(nèi)容。 3先觀察:界面設(shè)計(jì)舉例先觀察:界面設(shè)計(jì)舉例1 141 1 窗體的屬性和透明顯示窗體的屬性和透明顯示利用利用TransparentTransparent和和ParentParent屬性,可以將屬性,可以將LabelLabel放到放到PictureBoxPictureBox上透明顯示,上透明顯示,也可以將多個也可以將多個PictureBoxPictureBox重疊透明顯示。重疊透明顯示。 舉例舉例2 2: (1)(1)將將label1label1、PictureBox1PictureBox1和和PictureBox2PictureBo

3、x2重疊放到一個重疊放到一個PanelPanel控件內(nèi)控件內(nèi) (2)(2)設(shè)置設(shè)置label1label1、PictureBox1PictureBox1和和PictureBox2PictureBox2控件的控件的BackColorBackColor屬性均為屬性均為 TransparentTransparent (3) (3)在構(gòu)造函數(shù)中,設(shè)置在構(gòu)造函數(shù)中,設(shè)置label1label1和和PictureBox2PictureBox2的父控件為的父控件為PictureBox1PictureBox1: label1.Parent = pictureBox1;label1.Parent = pictu

4、reBox1; pictureBox2.Parent = pictureBox1;pictureBox2.Parent = pictureBox1; 則則label1label1和和PictureBox2PictureBox2相對于相對于PictureBox1PictureBox1是透明的,是透明的, 而而PictureBox1PictureBox1相對于窗體相對于窗體Form1Form1是透明的。是透明的。51.2 1.2 單文檔窗體(單文檔窗體(SDISDI)與多文檔窗體()與多文檔窗體(MDIMDI) 1.1.默認(rèn)為單文檔窗體(默認(rèn)為單文檔窗體(SDISDI),將窗體的),將窗體的IsM

5、diContainerIsMdiContainer屬性設(shè)置為屬性設(shè)置為 truetrue,即可將該窗體變?yōu)槎辔臋n窗體(,即可將該窗體變?yōu)槎辔臋n窗體(MDIMDI)。)。2. MDI2. MDI例子:例子: (1)(1)創(chuàng)建項(xiàng)目創(chuàng)建項(xiàng)目MdiExampleMdiExample (2) (2)添加窗體添加窗體Form2Form2、Form3Form3 (3) (3)將將Form1Form1的的IsMdiContainerIsMdiContainer屬性設(shè)置為屬性設(shè)置為TrueTrue,然后添加菜單:,然后添加菜單: (a) (a) 打開與關(guān)閉子窗口打開與關(guān)閉子窗口 子菜單:打開子菜單:打開Form

6、2Form2 打開打開Form3Form3 關(guān)閉關(guān)閉Form2Form2 關(guān)閉關(guān)閉Form3Form3 (b) (b)排列子窗口(子菜單:水平平鋪、垂直平鋪、層疊)排列子窗口(子菜單:水平平鋪、垂直平鋪、層疊) (c)(c)退出退出61.2 1.2 單文檔窗體(單文檔窗體(SDISDI)與多文檔窗體()與多文檔窗體(MDIMDI)(4)(4)添加添加“打開打開Form2Form2”、“打開打開Form3Form3”事件:事件: private void private void 打開打開Form2ToolStripMenuItem_Click(Form2ToolStripMenuItem_Cl

7、ick() ) Form2 fm = new Form2(); Form2 fm = new Form2(); fm. fm.MdiParentMdiParent = this; = this; fm.Name = Form2;fm.Name = Form2; fm.Show(); fm.Show(); private void private void 打開打開Form3ToolStripMenuItem_Click(Form3ToolStripMenuItem_Click() ) Form3 fm = new Form3(); Form3 fm = new Form3(); fm.MdiP

8、arent = this; fm.MdiParent = this; fm.Name = Form3; fm.Name = Form3; fm.Show(); fm.Show(); 不能省略,如果不設(shè)置,將其作不能省略,如果不設(shè)置,將其作為子窗體時,其為子窗體時,其NameName屬性默認(rèn)屬性默認(rèn)為空字符串(為空字符串(String.EmptyString.Empty)71.2 1.2 單文檔窗體(單文檔窗體(SDISDI)與多文檔窗體()與多文檔窗體(MDIMDI)(5) (5) 添加添加“關(guān)閉關(guān)閉Form2Form2”、“關(guān)閉關(guān)閉Form3Form3”事件:事件: private void

9、 private void 關(guān)閉關(guān)閉Form2ToolStripMenuItem_Click(Form2ToolStripMenuItem_Click() ) Form mdiChildren = this.MdiChildren; Form mdiChildren = this.MdiChildren; foreach(Form fm in mdiChildren) foreach(Form fm in mdiChildren) if (fm.Name = Form2) fm.Close(); if (fm.Name = Form2) fm.Close(); private void pri

10、vate void 關(guān)閉關(guān)閉Form3ToolStripMenuItem_Click(Form3ToolStripMenuItem_Click() ) Form mdiChildren = this.MdiChildren; Form mdiChildren = this.MdiChildren; foreach (Form fm in mdiChildren) foreach (Form fm in mdiChildren) if (fm.Name = Form3) fm.Close(); if (fm.Name = Form3) fm.Close(); 81.2 1.2 單文檔窗體(單文檔

11、窗體(SDISDI)與多文檔窗體()與多文檔窗體(MDIMDI)(6) (6) 添加子窗體排列事件:添加子窗體排列事件: private void private void 水平平鋪水平平鋪ToolStripMenuItem_Click(ToolStripMenuItem_Click() ) this.LayoutMdi(MdiLayout.TileHorizontal); this.LayoutMdi(MdiLayout.TileHorizontal); private void private void 垂直平鋪垂直平鋪ToolStripMenuItem_Click(ToolStripMe

12、nuItem_Click() ) this.LayoutMdi(MdiLayout.TileVertical); this.LayoutMdi(MdiLayout.TileVertical); private void private void 層疊層疊ToolStripMenuItem_Click(ToolStripMenuItem_Click() ) this.LayoutMdscade); this.LayoutMdscade); (7) (7) 添加添加“退出退出”事件:事件: private void private void 退出退出ToolStripMenuItem_Click(

13、ToolStripMenuItem_Click() ) Application.Exit(); Application.Exit(); (8) (8) 運(yùn)行,觀察效果。運(yùn)行,觀察效果。9實(shí)驗(yàn)中發(fā)現(xiàn)的問題回答實(shí)驗(yàn)中發(fā)現(xiàn)的問題回答問題:我希望知道程序是否執(zhí)行到某處,但又不希望在設(shè)計(jì)窗體上顯示,問題:我希望知道程序是否執(zhí)行到某處,但又不希望在設(shè)計(jì)窗體上顯示,有哪些方法可以做到?有哪些方法可以做到?答:答:方法方法1 1:在判斷是否執(zhí)行的地方設(shè)置斷點(diǎn)。在判斷是否執(zhí)行的地方設(shè)置斷點(diǎn)。 方法方法2 2:利用調(diào)試輸出窗口輸出相應(yīng)信息。利用調(diào)試輸出窗口輸出相應(yīng)信息。 (1)(1)選擇菜單的選擇菜單的“視圖視圖

14、” “輸出輸出”,以便顯示調(diào)試信息,以便顯示調(diào)試信息 (2)(2)利用調(diào)試信息測試執(zhí)行情況。例如測試每次循環(huán)計(jì)算的結(jié)果:利用調(diào)試信息測試執(zhí)行情況。例如測試每次循環(huán)計(jì)算的結(jié)果: int sum = 0;int sum = 0; for (int i = 0; i 100; i+) for (int i = 0; i 100; i+) sum += i; sum += i; System.Diagnostics.Debug.PrintSystem.Diagnostics.Debug.Print(第第00次循環(huán):次循環(huán):1, i,sum);1, i,sum); 調(diào)試信息只在調(diào)試輸出窗口中顯示,不會在

15、設(shè)計(jì)窗體上顯示。在進(jìn)行需調(diào)試信息只在調(diào)試輸出窗口中顯示,不會在設(shè)計(jì)窗體上顯示。在進(jìn)行需要大量時間的后臺操作時,這種方法很有用。要大量時間的后臺操作時,這種方法很有用。102 Windows2 Windows窗體基本控件窗體基本控件2.1 2.1 控件中常用的屬性和方法控件中常用的屬性和方法1.1.常用基本屬性常用基本屬性 除了書上講的屬性外,還要注意以下屬性的用法:除了書上講的屬性外,還要注意以下屬性的用法:1) 1) (Name)(Name):指定控件的名稱,它是控件在當(dāng)前應(yīng)用程序中的:指定控件的名稱,它是控件在當(dāng)前應(yīng)用程序中的唯一標(biāo)識,代碼通過該屬性來訪問控件唯一標(biāo)識,代碼通過該屬性來訪問

16、控件2) 2) EnabledEnabled:決定控件是否可用,取值為:決定控件是否可用,取值為truetrue時可用,取值為時可用,取值為falsefalse時不可用時不可用3 3)AnchorAnchor屬性屬性:保持控件與邊框的距離不變:保持控件與邊框的距離不變4 4)DockDock屬性屬性:讓控件始終緊靠邊框:讓控件始終緊靠邊框112.1 2.1 控件中常用的屬性和方法控件中常用的屬性和方法2.Anchor2.Anchor屬性用法舉例屬性用法舉例122.1 2.1 控件中常用的屬性和方法控件中常用的屬性和方法3.3.常用方法常用方法 FocusFocus方法:讓控件獲得焦點(diǎn)方法:讓控

17、件獲得焦點(diǎn) 如果希望窗體如果希望窗體一開始一開始就讓某個控件獲得焦點(diǎn),可以在窗體的就讓某個控件獲得焦點(diǎn),可以在窗體的 ShownShown事件事件中實(shí)現(xiàn)中實(shí)現(xiàn) 各種控件都有自己常用的方法(后面會逐一介紹)各種控件都有自己常用的方法(后面會逐一介紹)132.2 TextBox2.2 TextBox控件控件1.1.文本框控件常用的基本屬性文本框控件常用的基本屬性 1) 1) TextText:表示文本框中顯示的內(nèi)容。:表示文本框中顯示的內(nèi)容。 2) 2) MaxLengthMaxLength:用戶可以鍵入的最多字符數(shù)。:用戶可以鍵入的最多字符數(shù)。 3) 3) MultilineMultiline:

18、是否顯示多行內(nèi)容。:是否顯示多行內(nèi)容。 4) 4) PasswordCharPasswordChar:輸入密碼字符時顯示的符號。:輸入密碼字符時顯示的符號。2. TextBox2. TextBox控件常用的基本事件控件常用的基本事件 TextChangedTextChanged:文本框中的內(nèi)容更改時觸發(fā)。:文本框中的內(nèi)容更改時觸發(fā)。3.3.舉例:舉例: 在一個文本框中輸入內(nèi)容,在另一個文本框中同時顯示在一個文本框中輸入內(nèi)容,在另一個文本框中同時顯示142.3 MaskedTextBox2.3 MaskedTextBox控件控件1. 1. 用途:用途: 通過掩碼限制用戶輸入的信息。通過掩碼限制用

19、戶輸入的信息。2. 2. 常用屬性常用屬性 MaskMask屬性屬性:設(shè)置掩碼:設(shè)置掩碼3. 3. 常用事件常用事件 TypeValidationCompletedTypeValidationCompleted事件事件4. 4. 舉例:舉例:15 private void Form1_Load(object sender, EventArgs e) private void Form1_Load(object sender, EventArgs e) maskedTextBox1.ValidatingType = typeof(System.Int32); maskedTextBox1.Val

20、idatingType = typeof(System.Int32); private void private void maskedTextBox1_TypeValidationCompleted(object sender, maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e)TypeValidationEventArgs e) if ( if (!e.IsValidInput)e.IsValidInput) MessageBox.Show( MessageBox.Show(請輸入

21、數(shù)字請輸入數(shù)字);); 162.4 RichTextBox2.4 RichTextBox控件控件1.1.常用屬性常用屬性 (1)(1)SelectionFontSelectionFont 表示當(dāng)前選中文本或所要輸入文本的字體、大小、效果等表示當(dāng)前選中文本或所要輸入文本的字體、大小、效果等 (2)(2)SelectionColorSelectionColor 表示當(dāng)前選中文本或所要輸入文本的顏色表示當(dāng)前選中文本或所要輸入文本的顏色2.2.常用方法常用方法 AppendTextAppendText方法方法: 添加文本信息添加文本信息3.3.舉例:舉例: (RichTextBoxExample)(R

22、ichTextBoxExample)172.5 CheckBox2.5 CheckBox控件控件1.1.三種狀態(tài)三種狀態(tài)2.2.常用屬性常用屬性 CheckedChecked屬性屬性3.3.常用事件常用事件 CheckedChangedCheckedChanged事件事件182.2.6 6 RadioButton RadioButton控件控件1.1.特點(diǎn):特點(diǎn):(1)(1)單選單選(2)(2)以以各自所在的容器各自所在的容器來劃分組,如果在一個窗體上創(chuàng)建多來劃分組,如果在一個窗體上創(chuàng)建多個單選按鈕組,可以使用個單選按鈕組,可以使用GroupBoxGroupBox或者或者PanelPanel控

23、件作為容器。控件作為容器。2.2.除了是單選外,其他用法與除了是單選外,其他用法與CheckBoxCheckBox用法相同。用法相同。192.7 ListBox2.7 ListBox控件控件1.1.用法及屬性有些類似于用法及屬性有些類似于CheckedListBoxCheckedListBox。 2.2.常用屬性常用屬性 1)1)ItemsItems:描述控件對象中的所有項(xiàng):描述控件對象中的所有項(xiàng) 2)MutiColumn2)MutiColumn:是否以多列的形式顯示各項(xiàng):是否以多列的形式顯示各項(xiàng) 3)SelectionMode3)SelectionMode: NoneNone、OneOne、

24、MultiSimpleMultiSimple、MultiExtendedMultiExtended 4) 4)SelectedIndexSelectedIndex:當(dāng)前選定項(xiàng)的索引號:當(dāng)前選定項(xiàng)的索引號 5)5)SelectedItemsSelectedItems:當(dāng)前選定項(xiàng):當(dāng)前選定項(xiàng)3.3.常用事件常用事件 SelectedIndexChangedSelectedIndexChanged:當(dāng):當(dāng)SelectedIndexSelectedIndex屬性值更改時觸發(fā)。屬性值更改時觸發(fā)。4.4.舉例:舉例:20圖5-11 選修課程更改窗體listBox1SelectionMode:MultiEx

25、tendedtextBoxAddbuttonDeletebuttonDeleteAllbuttonAdd2.7 ListBox2.7 ListBox控件控件21新建一個新建一個windowswindows應(yīng)用程序項(xiàng)目,添加一個應(yīng)用程序項(xiàng)目,添加一個ListBoxListBox控件控件和兩個和兩個ButtonButton控件,設(shè)置屬性如表所示??丶?,設(shè)置屬性如表所示。 控件名控件類型屬性名屬性值listCountryListBoxSelectionModeMultiSimplebtnSelectAllButtonText全選btnUnSelectButtonText反選2121WindowsWi

26、ndows窗體界面設(shè)計(jì)窗體界面設(shè)計(jì)22private void button1_Click(object sender, EventArgs e)private void button1_Click(object sender, EventArgs e) for (int i = 0; i for (int i = 0; i listCountrylistCountry.Items.Count; i+).Items.Count; i+) listCountrylistCountry.SelectedIndex = i;.SelectedIndex = i; 23private void but

27、ton2_Click(object sender, EventArgs e)private void button2_Click(object sender, EventArgs e) bool b; bool b; for (int i = 0; i for (int i = 0; i = 0; i-)for (int i = checkedListBox1.CheckedItems.Count - 1; i = 0; i-) checkedListBox1.Items.Remove(checkedListBox1. checkedListBox1.Items.Remove(checkedL

28、istBox1.CheckedItemsCheckedItemsi);i); 252.9 ComboBox2.9 ComboBox控件控件1.1.由兩部分組合而成:一個文本框和一個列表框由兩部分組合而成:一個文本框和一個列表框2.2.常用屬性常用屬性1) 1) DropDownStyleDropDownStyle屬性:屬性:SimpleSimple、DropDownDropDown、DropDownListDropDownList2) 2) ItemsItems屬性:與屬性:與ListBoxListBox的的ItemItem屬性用法相同屬性用法相同3) 3) SelectedItemSelec

29、tedItem屬性:與屬性:與ListBoxListBox的的SelectedItemSelectedItem屬性用法相同屬性用法相同4) 4) SelectedIndexSelectedIndex屬性:與屬性:與ListBoxListBox的的SelectedIndexSelectedIndex屬性用法相同屬性用法相同 5) 5) SelectedValueSelectedValue屬性屬性( (只有在數(shù)據(jù)綁定中才用此屬性,第只有在數(shù)據(jù)綁定中才用此屬性,第8 8章再講章再講) )3.3.常用方法常用方法1) 1) AddAdd方法、方法、RemoveRemove方法、方法、InsertIns

30、ert方法方法2) 2) AddRangeAddRange方法方法3) 3) ClearClear方法方法4.4.常用事件:常用事件:SelectedIndexChangedSelectedIndexChanged事件事件26利用利用ComboxBoxComboxBox控件加載系統(tǒng)所有字體控件加載系統(tǒng)所有字體 控件名控件類型屬性名屬性值comboFontComboBox默認(rèn)button1ButtonText加載字體2626WindowsWindows窗體界面設(shè)計(jì)窗體界面設(shè)計(jì)27using System.Drawing.Text;using System.Drawing.Text;private

31、 void button1_Click(object sender, EventArgs e)private void button1_Click(object sender, EventArgs e) InstalledFontCollection fontCollection = new InstalledFontCollection fontCollection = new InstalledFontCollection();InstalledFontCollection();for (int i = 0; i fontCollection.Families.Length; i+)for

32、 (int i = 0; i fontCollection.Families.Length; i+) comboFont.Items.Add(fontCollection.Familiesi.Name); comboFont.Items.Add(fontCollection.Familiesi.Name); 28練習(xí)題練習(xí)題292.10 Timer2.10 Timer組件組件1.1.檢查是否到達(dá)事先規(guī)定的時間間隔,并在到達(dá)時間間隔時觸發(fā)的檢查是否到達(dá)事先規(guī)定的時間間隔,并在到達(dá)時間間隔時觸發(fā)的事件中執(zhí)行需要的功能。事件中執(zhí)行需要的功能。 2.2.常用屬性常用屬性 1)1)EnabledEnab

33、led:是否啟用計(jì)時,:是否啟用計(jì)時,falsefalse表示停止計(jì)時,表示停止計(jì)時,truetrue表示開始表示開始計(jì)時(也可以用計(jì)時(也可以用StartStart方法和方法和StopStop方法,效果相同)。方法,效果相同)。 2)2)IntervalInterval:觸發(fā):觸發(fā)TickTick事件的間隔時間,以毫秒為單位。事件的間隔時間,以毫秒為單位。3.3.事件事件 TickTick:每隔:每隔IntervalInterval屬性指定的時間都會觸發(fā)此事件。屬性指定的時間都會觸發(fā)此事件。302.10 Timer2.10 Timer組件組件4.4.舉例舉例 顯示循環(huán)向上滾動的動畫字幕(顯示

34、循環(huán)向上滾動的動畫字幕(TimerExampleTimerExample)312.11 PictureBox2.11 PictureBox控件控件1.1.常用屬性常用屬性 1) Image1) Image:獲取或設(shè)置顯示的圖像:獲取或設(shè)置顯示的圖像 2) SizeMode2) SizeMode:AutoSizeAutoSize、CenterImageCenterImage、NormalNormal、StretchImageStretchImage、ZoomZoom 3) Parent 3) Parent(僅代碼方式下可用):獲取或設(shè)置父級控件(僅代碼方式下可用):獲取或設(shè)置父級控件2.2.舉例

35、舉例1 1:例:例5-115-11 舉例舉例2 2:圖片透明疊加(:圖片透明疊加(TransparentExampleTransparentExample)323 3 菜單與工具欄菜單與工具欄3.1 MenuStrip3.1 MenuStrip控件控件1.1.可以在窗體的可以在窗體的頂部頂部、底部底部以及窗體的以及窗體的任何一個位置任何一個位置顯示菜單。顯示菜單。2.2.常用屬性常用屬性(1) (1) DisplayStyleDisplayStyle:菜單項(xiàng)上的顯示樣式。:菜單項(xiàng)上的顯示樣式。(2) (2) ImageImage:指定在該菜單項(xiàng)上顯示的圖標(biāo)。:指定在該菜單項(xiàng)上顯示的圖標(biāo)。( (

36、在在C:Program FilesMicrosoft Visual Studio C:Program FilesMicrosoft Visual Studio 9Common7VS2008ImageLibrary9Common7VS2008ImageLibrary下有一個下有一個.zip.zip文件,內(nèi)有各種動畫文件、文件,內(nèi)有各種動畫文件、圖像文件和圖標(biāo)文件,例如展開后在目錄圖像文件和圖標(biāo)文件,例如展開后在目錄Objectspng_formatWinVistaObjectspng_formatWinVista下有打開、保存等圖像。)下有打開、保存等圖像。)(3) (3) ShortcutKe

37、ysShortcutKeys:快捷鍵。:快捷鍵。3.3.常用事件:常用事件:ClickClick事件事件333 3 菜單與工具欄菜單與工具欄菜單的幾種形式:菜單的幾種形式:DockDock:TopTopDockDock:BottomBottom343.2 ContextMenuStrip3.2 ContextMenuStrip控件控件1.1.用于制作右鍵快捷菜單用于制作右鍵快捷菜單2.2.使用該控件的關(guān)鍵是將使用該控件的關(guān)鍵是將需要顯示快捷菜單的控件需要顯示快捷菜單的控件的的ContextMenuStripContextMenuStrip屬性屬性設(shè)置為添加的設(shè)置為添加的ContextMenuS

38、tripContextMenuStrip控件對象。控件對象。 (書上例子漏了這一步)(書上例子漏了這一步)3.3.除了是右鍵彈出菜單外,其他用法與除了是右鍵彈出菜單外,其他用法與MenuStripMenuStrip相同。相同。353.3 ToolStrip3.3 ToolStrip與與StatusStripStatusStrip1.1.作用作用 為窗體添加工具欄為窗體添加工具欄(ToolStrip)(ToolStrip)或者狀態(tài)欄(或者狀態(tài)欄(StatusStripStatusStrip)。)。工具欄和狀態(tài)欄一般是由多個按鈕、標(biāo)簽等排列組成,通過這工具欄和狀態(tài)欄一般是由多個按鈕、標(biāo)簽等排列組成

39、,通過這些項(xiàng)可以快速地執(zhí)行程序提供的一些常用命令或者顯示一些狀些項(xiàng)可以快速地執(zhí)行程序提供的一些常用命令或者顯示一些狀態(tài)信息。態(tài)信息。 2.2.常用屬性和事件與常用屬性和事件與MenuStripMenuStrip控件基本相同??丶鞠嗤?。363.4 BackgroundWork3.4 BackgroundWork和進(jìn)度條和進(jìn)度條1.BackgroundWork1.BackgroundWork組件組件 (1)(1)用于后臺執(zhí)行耗時的處理(單獨(dú)的線程),避免長時間運(yùn)行時可能會用于后臺執(zhí)行耗時的處理(單獨(dú)的線程),避免長時間運(yùn)行時可能會導(dǎo)致用戶界面似乎處于停止響應(yīng)狀態(tài)。導(dǎo)致用戶界面似乎處于停止響應(yīng)狀

40、態(tài)。 (2)(2)在后臺利用在后臺利用DoWorkDoWork事件調(diào)用耗時的操作。事件調(diào)用耗時的操作。 注意:注意:不要在不要在DoWorkDoWork事件中操作任何界面對象。事件中操作任何界面對象。 (3)(3)利用利用ProgressChangedProgressChanged事件通知進(jìn)度。事件通知進(jìn)度。 (4)(4)利用利用RunWorkerCompletedRunWorkerCompleted事件處理操作完成時的工作。事件處理操作完成時的工作。2.2.如何啟動后臺操作如何啟動后臺操作 (1)(1)調(diào)用調(diào)用BackgroundWorkBackgroundWork對象的對象的RunWork

41、erAsyncRunWorkerAsync方法。方法。 (2)(2)調(diào)用時,可以將對象作為參數(shù)傳遞給后臺線程。調(diào)用時,可以將對象作為參數(shù)傳遞給后臺線程。373.4 BackgroundWork3.4 BackgroundWork和進(jìn)度條和進(jìn)度條3.3.在前臺用在前臺用StatusStripStatusStrip中的中的ToolStripProgressBarToolStripProgressBar顯示后臺正在處理的進(jìn)度。顯示后臺正在處理的進(jìn)度。4.ProgressBar4.ProgressBar舉例舉例1 1:在后臺執(zhí)行一個循環(huán),在界面中顯示進(jìn)度。(如果不用后臺操:在后臺執(zhí)行一個循環(huán),在界面中

42、顯示進(jìn)度。(如果不用后臺操作,在執(zhí)行循環(huán)中會看到操作控件時會像死機(jī)一樣)作,在執(zhí)行循環(huán)中會看到操作控件時會像死機(jī)一樣)383.4 BackgroundWork3.4 BackgroundWork和進(jìn)度條和進(jìn)度條3.VS20053.VS2005建議用建議用StatusStripStatusStrip中的中的ToolStripProgressBarToolStripProgressBar替換替換ProgressBar,ProgressBar,但是在實(shí)際應(yīng)用中,發(fā)現(xiàn)還是原來的但是在實(shí)際應(yīng)用中,發(fā)現(xiàn)還是原來的ProgressBarProgressBar比較好用。比較好用。4.ProgressBar4.

43、ProgressBar舉例:用無損壓縮算法壓縮文件,并顯示壓縮進(jìn)舉例:用無損壓縮算法壓縮文件,并顯示壓縮進(jìn)度(只注意進(jìn)度條是如何實(shí)現(xiàn)的即可)。度(只注意進(jìn)度條是如何實(shí)現(xiàn)的即可)。394 4 其他其他WindowsWindows窗體控件窗體控件4.1 ToolTip4.1 ToolTip組件組件1. 1. 用途:鼠標(biāo)位于某個控件上,顯示該控件功能的提示信息。用途:鼠標(biāo)位于某個控件上,顯示該控件功能的提示信息。2.2.當(dāng)向窗體中添加一個當(dāng)向窗體中添加一個ToolTipToolTip組件后,該窗體中的其他控件,包括窗體組件后,該窗體中的其他控件,包括窗體本身,本身,【屬性屬性】對話框中都將會出現(xiàn)一個

44、新的屬性對話框中都將會出現(xiàn)一個新的屬性“ToolTip1ToolTip1上的上的ToolTipToolTip”。3. 3. 還可以將還可以將ToolTipToolTip顯示為下圖的形狀(顯示為下圖的形狀(ToolTipExampleToolTipExample):):ToolTipToolTip的一種形式的一種形式404.2 SplitContainer4.2 SplitContainer控件控件 1.1.功能功能 (1)(1)用于將窗體或者用于將窗體或者PanelPanel控件分隔為幾部分控件分隔為幾部分 (2)(2)用于實(shí)現(xiàn)一些特殊的窗體效果用于實(shí)現(xiàn)一些特殊的窗體效果2.2.舉例(舉例(S

45、plitContainerExampleSplitContainerExample,下圖為設(shè)計(jì)窗體,變換后的效果見下頁),下圖為設(shè)計(jì)窗體,變換后的效果見下頁)414.2 SplitContainer4.2 SplitContainer控件控件左邊全部折疊,右邊右部全展開左邊全部折疊,右邊右部全展開左邊中間展開,右邊邊緣??孔筮呏虚g展開,右邊邊緣??孔筮呏虚g展開,右邊左部全展開左邊中間展開,右邊左部全展開左邊展開兩個,右邊右部全展開左邊展開兩個,右邊右部全展開42選項(xiàng)卡控件選項(xiàng)卡控件 使用使用TabControlTabControl類封裝。在這類控件中,通常在上部有類封裝。在這類控件中,通常在上

46、部有一些標(biāo)簽供選擇,每個標(biāo)簽對應(yīng)一個選項(xiàng)卡頁面一些標(biāo)簽供選擇,每個標(biāo)簽對應(yīng)一個選項(xiàng)卡頁面TabPageTabPage。選中一個標(biāo)簽就會顯示相應(yīng)的頁面而隱藏其。選中一個標(biāo)簽就會顯示相應(yīng)的頁面而隱藏其他頁面。通過這個方式,可以把大量的控件放在多個頁他頁面。通過這個方式,可以把大量的控件放在多個頁面中,通過選項(xiàng)卡標(biāo)簽迅速切換。一個很常見的例子是面中,通過選項(xiàng)卡標(biāo)簽迅速切換。一個很常見的例子是WindowsWindows系統(tǒng)的系統(tǒng)的“顯示屬性顯示屬性”對話框。對話框。 選項(xiàng)卡屬性選項(xiàng)卡屬性 TabPagesTabPages屬性,這是一個選項(xiàng)卡頁面的集合,可以通過它對選屬性,這是一個選項(xiàng)卡頁面的集合,可

47、以通過它對選項(xiàng)卡的標(biāo)簽項(xiàng)進(jìn)行管理。項(xiàng)卡的標(biāo)簽項(xiàng)進(jìn)行管理。在屬性窗口中單擊在屬性窗口中單擊TabPagesTabPages屬性右邊的按鈕,顯示屬性右邊的按鈕,顯示“TabPageTabPage集集合編輯器合編輯器”對話框,通過它來添加刪除選項(xiàng)卡頁面和設(shè)置頁面屬對話框,通過它來添加刪除選項(xiàng)卡頁面和設(shè)置頁面屬性。如圖。性。如圖。要為添加后的特定頁面添加控件,通過選項(xiàng)卡控件的標(biāo)簽切換到要為添加后的特定頁面添加控件,通過選項(xiàng)卡控件的標(biāo)簽切換到相應(yīng)頁面,再選中該頁面,然后把控件拖動到頁面中。相應(yīng)頁面,再選中該頁面,然后把控件拖動到頁面中。43AlignmentAlignment屬性,指定選項(xiàng)卡的標(biāo)簽位于控

48、件的什么位置,屬性,指定選項(xiàng)卡的標(biāo)簽位于控件的什么位置,是一個是一個TabAlignmentTabAlignment枚舉類型,有枚舉類型,有Top Top (默認(rèn)),(默認(rèn)),BottomBottom,LeftLeft,RightRight四個值。四個值。AppearanceAppearance屬性,指定標(biāo)簽的外觀,有三種風(fēng)格:屬性,指定標(biāo)簽的外觀,有三種風(fēng)格:ButtonsButtons、FlatButtonsFlatButtons、NormalNormal(默認(rèn))。(默認(rèn))。只有當(dāng)標(biāo)簽位于頂部時,才可以設(shè)置只有當(dāng)標(biāo)簽位于頂部時,才可以設(shè)置FlatButtonsFlatButtons風(fēng)格;風(fēng)

49、格;位于其他位置時,將顯示為位于其他位置時,將顯示為ButtonsButtons。MultiLineMultiLine屬性,指定是否可以顯示多行標(biāo)簽。屬性,指定是否可以顯示多行標(biāo)簽。默認(rèn)情況為單行顯示,在標(biāo)簽超出選項(xiàng)卡可視范圍時自默認(rèn)情況為單行顯示,在標(biāo)簽超出選項(xiàng)卡可視范圍時自動使用箭頭按鈕來滾動標(biāo)簽。動使用箭頭按鈕來滾動標(biāo)簽。當(dāng)把標(biāo)簽定位于選項(xiàng)卡的左邊或右邊時,當(dāng)把標(biāo)簽定位于選項(xiàng)卡的左邊或右邊時,MultiLineMultiLine屬性屬性自動為自動為truetrue。4.3 TabControl4.3 TabControl控件控件 44 ItemSizeItemSize屬性,指定標(biāo)簽的大小

50、。屬性,指定標(biāo)簽的大小。 SizeModeSizeMode屬性,指定標(biāo)簽是否自動調(diào)整大小來填充標(biāo)簽行。枚屬性,指定標(biāo)簽是否自動調(diào)整大小來填充標(biāo)簽行。枚舉類型舉類型TabSizeModeTabSizeMode定義了三種取值。定義了三種取值。NormalNormal:根據(jù)每個標(biāo)簽內(nèi)容調(diào)整標(biāo)簽的寬度:根據(jù)每個標(biāo)簽內(nèi)容調(diào)整標(biāo)簽的寬度FixedFixed:所有標(biāo)簽寬度相同:所有標(biāo)簽寬度相同F(xiàn)illToRightFillToRight:調(diào)整標(biāo)簽寬度,使其填充標(biāo)簽行(只有在多行標(biāo):調(diào)整標(biāo)簽寬度,使其填充標(biāo)簽行(只有在多行標(biāo)簽的情況下進(jìn)行調(diào)整)簽的情況下進(jìn)行調(diào)整) TabCountTabCount屬性,指定控

51、件中所包含的標(biāo)簽的數(shù)量。屬性,指定控件中所包含的標(biāo)簽的數(shù)量。 SelectedIndexSelectedIndex屬性,當(dāng)前所選中標(biāo)簽的索引。若沒有選中項(xiàng)屬性,當(dāng)前所選中標(biāo)簽的索引。若沒有選中項(xiàng),返回,返回-1-1。 SelectedTabSelectedTab屬性,當(dāng)前所選中標(biāo)簽的引用。若沒有選中項(xiàng),屬性,當(dāng)前所選中標(biāo)簽的引用。若沒有選中項(xiàng),返回返回nullnull。4.3 TabControl4.3 TabControl控件控件 45 管理管理TabPagesTabPages屬性的方法屬性的方法 可以提供索引訪問可以提供索引訪問tabControl1.TabPages0.Text = “

52、tabControl1.TabPages0.Text = “ 背景背景 ” ”; ; 添加添加TabPageTabPage對象:對象:AddAdd或者或者AddRangeAddRange方法。方法。 刪除刪除TabPageTabPage對象:對象:RemoveRemove方法(參數(shù)為方法(參數(shù)為TabPageTabPage引用)或引用)或RemoveAtRemoveAt方法(參數(shù)為索引值)方法(參數(shù)為索引值) 清除所有的清除所有的TabPageTabPage對象:對象:ClearClear方法。方法。 SelectedIndexChangedSelectedIndexChanged事件事件 改

53、變當(dāng)前選擇的標(biāo)簽時觸發(fā)這個事件改變當(dāng)前選擇的標(biāo)簽時觸發(fā)這個事件 可以在這個事件的處理中根據(jù)程序狀態(tài)來激活或禁止相應(yīng)頁可以在這個事件的處理中根據(jù)程序狀態(tài)來激活或禁止相應(yīng)頁面的某些控件。面的某些控件。 示例程序示例程序4.3 TabControl4.3 TabControl控件控件 464.3 TabControl4.3 TabControl控件控件 1.1.用途用途 當(dāng)需要有多個選項(xiàng)卡窗口時,可以使用此控件當(dāng)需要有多個選項(xiàng)卡窗口時,可以使用此控件2.2.舉例:(舉例:(TabControlExampleTabControlExample)474.4 4.4 ListView控件1.1.用途用途

54、按不同方式顯示列表視圖信息按不同方式顯示列表視圖信息2.2.舉例:舉例:48列表視圖列表視圖 用用ListViewListView類封裝,與列表框類似都是顯示一些項(xiàng)的列表的類封裝,與列表框類似都是顯示一些項(xiàng)的列表的控件,但功能更強(qiáng)大??丶?,但功能更強(qiáng)大。 列表視圖中可以使用列表視圖中可以使用4 4中不同方式顯示列表項(xiàng):大圖標(biāo)、小中不同方式顯示列表項(xiàng):大圖標(biāo)、小圖標(biāo)、列表和詳細(xì)信息模式,可以在應(yīng)用程序中選擇使用任圖標(biāo)、列表和詳細(xì)信息模式,可以在應(yīng)用程序中選擇使用任何一種或是所有的方式。何一種或是所有的方式。49 列表視圖屬性列表視圖屬性ViewView屬性,指定列表視圖的顯示模式,屬性值在枚舉類

55、型屬性,指定列表視圖的顯示模式,屬性值在枚舉類型ViewView中指定中指定LargeIconLargeIcon,顯示大圖標(biāo),并在圖標(biāo)的下面顯示標(biāo)題。,顯示大圖標(biāo),并在圖標(biāo)的下面顯示標(biāo)題。SmallIconSmallIcon,顯示小圖標(biāo),并在圖標(biāo)的右邊顯示標(biāo)題。,顯示小圖標(biāo),并在圖標(biāo)的右邊顯示標(biāo)題。ListList,每項(xiàng)包含一個小圖標(biāo)和一個標(biāo)題,并使用列來,每項(xiàng)包含一個小圖標(biāo)和一個標(biāo)題,并使用列來組織列表項(xiàng),但每列都沒有表頭。組織列表項(xiàng),但每列都沒有表頭。DetailsDetails,使用報(bào)表的形式顯示列表項(xiàng),每項(xiàng)占一行。,使用報(bào)表的形式顯示列表項(xiàng),每項(xiàng)占一行。最左邊的一列顯示該項(xiàng)的小圖標(biāo)和標(biāo)

56、題,其他列顯示最左邊的一列顯示該項(xiàng)的小圖標(biāo)和標(biāo)題,其他列顯示該項(xiàng)的子項(xiàng)。這種方式還可以包含一個表頭,顯示每該項(xiàng)的子項(xiàng)。這種方式還可以包含一個表頭,顯示每列的標(biāo)題,可以在運(yùn)行時通過表頭來改變列的寬度。列的標(biāo)題,可以在運(yùn)行時通過表頭來改變列的寬度。4.4 4.4 ListView控件50 HeaderStyleHeaderStyle屬性。在詳細(xì)信息模式下,列表視圖會顯示表頭屬性。在詳細(xì)信息模式下,列表視圖會顯示表頭。使用這個屬性來設(shè)置表頭的不同風(fēng)格,取值由枚舉類型。使用這個屬性來設(shè)置表頭的不同風(fēng)格,取值由枚舉類型ColumnHeaderStyleColumnHeaderStyle設(shè)定設(shè)定Click

57、ableClickable,顯示表頭,并且它可以響應(yīng)單擊事件。,顯示表頭,并且它可以響應(yīng)單擊事件。NonclickableNonclickable,顯示表頭,但它不響應(yīng)單擊事件。,顯示表頭,但它不響應(yīng)單擊事件。NoneNone,不顯示表頭。,不顯示表頭。 LargeImageListLargeImageList屬性和屬性和SmallImageListSmallImageList屬性屬性在大圖標(biāo)模式下,顯示在大圖標(biāo)模式下,顯示LargeImageListLargeImageList中的圖像列表;中的圖像列表;在其他三個模式下,顯示在其他三個模式下,顯示SmallImageListSmallIma

58、geList中的圖像列表。中的圖像列表。 MultiSelectMultiSelect屬性,設(shè)置列表視圖是否可以選擇多項(xiàng)。默認(rèn)為屬性,設(shè)置列表視圖是否可以選擇多項(xiàng)。默認(rèn)為只能選擇一項(xiàng)。只能選擇一項(xiàng)。 SortingSorting屬性,指定是否對列表項(xiàng)進(jìn)行排序。屬性,指定是否對列表項(xiàng)進(jìn)行排序。 ScrollableScrollable屬性,指定是否顯示滾動條。屬性,指定是否顯示滾動條。4.4 4.4 ListView控件51 為列表視圖添加列表頭和列表項(xiàng)為列表視圖添加列表頭和列表項(xiàng)添加列表頭(添加列表頭(ColumnHeaderColumnHeader類)類)在屬性窗口中單擊在屬性窗口中單擊Co

59、lumnsColumns屬性旁帶省略號的按鈕屬性旁帶省略號的按鈕,打開,打開“ColumnHeaderColumnHeader集合編輯器集合編輯器”對話框。單擊對話框。單擊其中的其中的“添加添加”按鈕添加一個新的列表頭,并在右按鈕添加一個新的列表頭,并在右邊可以設(shè)置它的屬性:邊可以設(shè)置它的屬性:NameName設(shè)置表頭名稱,設(shè)置表頭名稱,TextText設(shè)設(shè)置表頭標(biāo)題,置表頭標(biāo)題,WidthWidth屬性設(shè)置列寬度,屬性設(shè)置列寬度,TextAlignTextAlign屬屬性設(shè)置列的對齊方式等等。性設(shè)置列的對齊方式等等。使用代碼添加的例子使用代碼添加的例子listView1.Column.Add

60、(“Drive”,100, listView1.Column.Add(“Drive”,100, HorizontalAlignment.Left);HorizontalAlignment.Left);其中參數(shù)分別表示列名稱,列寬度和列對齊方式其中參數(shù)分別表示列名稱,列寬度和列對齊方式。4.4 4.4 ListView控件52添加列表項(xiàng)(添加列表項(xiàng)(ListItemListItem類)類)單擊列表視圖屬性窗口中單擊列表視圖屬性窗口中ItemsItems屬性旁的按鈕,打開屬性旁的按鈕,打開“ListViewItemListViewItem集合編輯器集合編輯器”對話框。類似添加列表對話框。類似添加列

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論