1 / 59

視窗程式設計 第十四章 進階輸出入元件

視窗程式設計 第十四章 進階輸出入元件. 鄧姚文 http://www.ywdeng.idv.tw. 大綱. 核取方塊 (CheckBox) 選項鈕 (RadioBut ton) 群組方塊 (GroupBox) 列表盒 (ListBox) 下拉式清單 (Combobox) 水平捲軸 (HScrollBar) 與垂直捲軸 (VScrollBar) 功能表 (MainMenu) 與快速鍵功能表 (Context Menu) 圖片盒 (Picturebox) RichTextBox 對話框 Timer DateTimePicker MonthCalendar.

thuyet
Télécharger la présentation

視窗程式設計 第十四章 進階輸出入元件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 視窗程式設計第十四章 進階輸出入元件 鄧姚文 http://www.ywdeng.idv.tw

  2. 大綱 • 核取方塊(CheckBox) • 選項鈕(RadioBut ton) • 群組方塊(GroupBox) • 列表盒(ListBox) • 下拉式清單(Combobox) • 水平捲軸(HScrollBar) 與垂直捲軸(VScrollBar) • 功能表(MainMenu) 與快速鍵功能表(Context Menu) • 圖片盒(Picturebox) • RichTextBox • 對話框 • Timer • DateTimePicker • MonthCalendar

  3. 核取方塊(CheckBox) • 應用:複選題 • 重要屬性如下: • Checked 屬性 是否被勾選 • Text 屬性 選項內的文字

  4. 字型(Font) • 透過各個控制項的 Font 屬性,設定控制項內的字型 • Font 建構子: Font(string fontFaminy, float emSize, FontStyle style) • FontStyle 樣式 • FontStyle.Regular 正常 • FontStyle.Bold 粗體字 • FontStyle.Itlic 斜體字 • FontStyle.Strikeout 刪除線 • FontStyle.Underline 畫底線

  5. 練習 • 寫一個字型測試程式,以 CheckBox 測試各種 FontStyle • 提示:若 A 為一個位元變數 • A | 1 = 1 (OR) • A & 0 = 0 (AND) • A ^ 1 = ~A (XOR)

  6. 1 4 - 2 選項鈕(RadioButton) • 應用:單選題 • 同一表單上僅能有一個 RadioButton 的 Checked=True • 重要屬性 • Checked該選項是否被選中 • Text 選項內的文字

  7. 練習 • 以 RadioButton 為先前的字型測試範例加上字型名稱(Font Family)的選項

  8. 群組方塊(GroupBox) • 將同表單上的元件分成不同的群組 • 同一表單上僅能有一個 RadioButton 的 Checked=True,以不同的 GroupBox 區隔各組 RadioButton

  9. 練習 • 以 RadioButton 配合 GroupBox,為先前的字型測試程式加入字型大小(emSize)選項

  10. 列表盒(ListBox) • ListBox 以清單的方式列出所有的選項,供使用者選擇,避免人為輸入錯誤 • 重要屬性: • Items[] 各個選項 • SelectedIndex 被選中的選項索引值 • SelectedItem 被選中的項目

  11. 範例14-4a • 試設計三個列表盒於表單:左邊放入藥品名稱、中間放入重量右邊放入患者所需處方藥品。 • 當使用者依序按一下藥品名稱、重量後, 右邊列表盒即輸出藥品及重量; 當使用者按一下右邊處方藥品, 即應刪除該項指定藥品。

  12. 下拉式清單(ComboBox) • ComboBox 是一種結合ListBox 與Edit 的輸入控制項, 使用者於ComboBox中所點選的項目, 可以直接放入Text 屬性, 因此可以簡化程式的撰寫, 但ComboBox 一次只能點選一個項目, 因此特別適用一次只點選一個項目的場合。其待選項目(Items) 亦可使用屬性視窗或撰寫程式設定, 其方法同上一小節的ListBox。

  13. 練習 • 修改字型測試範例,使用 ComboBox 選擇體的顏色。

  14. 水平捲軸(HScrollBar) 與垂直捲軸(VScrollBar) • 使用捲軸控制輸出的大小 • HScrollBar 水平放置 • VScrollBar 垂直放置都相同。

  15. HScrollBar & VScrollBar 常用屬性 Value 屬性 取得或設定捲軸的值。 Maximum 屬性 捲軸可移動的最大值。 Minimum 屬性 捲軸可移動的最小值

  16. HScrollBar & VScrollBar 常用屬性 LargeChange 屬性 當使用者用滑鼠按一下捲軸盒至捲軸端點箭頭鈕之間的區域時, 可移動捲軸, 而此移動的大小, 稱為LargeChange 。 SmallChange 屬性 當使用者用滑鼠按一下捲軸盒至捲軸兩端的箭頭鈕時, 可令捲軸盒移動, 而此移動的大小, 稱為SmallChange 。

  17. HScrollBar & VScrollBar 事件 ValueChanged 事件 當捲軸值改變時, 產生此事件。 Scroll 事件 當捲軸值改變時, 產生此事件。

  18. 練習 • 顯示水平捲軸與文字值 • 最小值 0 • 最大值 100 • 當使用者移動捲軸時,以文字方塊顯示其值 • 當使用者改變文字方塊內的數值時,改變捲軸的值。

  19. 練習 • 以三個捲軸分別代表光的三原色:紅、綠、藍(R 、G、B),以一個 Label 顯示調色後的結果,當使用者調整捲軸值時,改變顏色 • 紅綠藍三原色的值最大 255,最小 0 • 調色方式: • Label1.BackColor = Color.FromArgb(int red, int green, int blue)

  20. 功能表(MainMenu) • 所有Windows 的應用程式均有功能表選單, 提供功能選單(例如File 、Edit 及Help) 及功能選項(如File 選單的New、Open 及Save 等選項), C#的MainMenu 即是協助使用者製作此功能表的物件。以下範例即是示範功能表的使用。

  21. 範例14-7a • 請以MainMenu 重作範例14-3a 的字型大小及邊界樣式設定。

  22. 快速鍵功能表(ContextMenu) • 當使用者按一下滑鼠右鍵時所出現的功能表, 稱為快速鍵功能表(ContextMenu)。其製作與編輯方式均同MainMenu, 唯一要注意的是ContextMenu製作完成之後, 要將啟動ContextMenu 物件的ContextMenu 屬性點選為ContextMenu, 請看以下範例說明。

  23. 範例14-7b • 製作快速鍵功能表。

  24. 1 4 - 8 圖片盒(Picturebox) PictureBox 元件可用來展示Bitbmps (*.bmp)、Icons (*.ico)、EnhancedMetafiles (*.emf)、Metafiles (*.wmf) 及JPEG (*.jpg 或*.jpeg) 等圖片, 其常用屬性如下: • BorderStyle 屬性 PictureBox 外框的樣式, 共有3 種型式, 分別是None 、FixedSingle 及Fixed3D, 讀者可自行測試, 了解其變化。 • Image 屬性 取得或設定PictureBox 顯示的影像。 • SizeMode 屬性 指示如何顯示影像, 共有4 種模式, 分別介紹如下:

  25. Normal 影像放置在PictureBox 的左上 角,如果影像大於包含它的 PictureBox,就會被裁剪, 如右圖 所示。 • AutoSize 將PictureBox 的大小調整為與 其所包含影像的大小, 其效果如 右圖所示。

  26. CenterImage 如果PictureBox 大於影像, 顯像即置中顯示, 如果影像大於PictureBox, 圖片即放在PictureBox 中央, 而外緣被裁剪, 如下圖左所示。 • StretchImage PictureBox 內的影像會延伸或縮小, 以調整為最適合PictureBox 的大小,如下圖右所示。

  27. 範例14-8a • 示範PictureBox 圖片盒。

  28. 範例14-8b 影像的移動與縮放。 題目分析 • 1. 物件的Top 與Left 屬性是控制元件在表單的位置, 若要改變元件的位置, 只要重設這兩個屬性即可。 • 2. 物件的Height 與Width 屬性是控制元件的大小, 所以重設這兩個屬性值可改變元件的大小。 • 3. SizeMode 屬性若點選StretchImage, 則影像可配合元件的大小而調整大小。 • 4. Button 元件有一個Image 屬性可設定其圖示, 本例即利用四個Button 控制PictureBox 的上下左右移動, 為了使圖示能充分表現上下左右的效果, 筆者於c:\CsBook\ch14\ 資料夾中放入了四個箭號圖示供其設定。

  29. 1 4 -9 RichTextBox RichTextBox 元件提供比標準TextBox 元件更進階的功能。例如, 可直接載入或儲存文字檔, 不同區段的文字可有不同的字型與顏色設定等。本節將介紹如何以RichTextBox 元件實作一個簡單的文字處理器, 以下是幾個常用的屬性。 • SelectedText 屬性 取得或設定RichTextBox 中選取的文字。 • SelectionLength 屬性 取得或設定RichTextBox 中選取的字元數。 • SelectionStart 屬性 取得或設定選取文字的起點。

  30. SelectionFont 取得或設定目前文字選取範圍的字型。 • SelectionColor 取得或設定目前文字選取範圍的文字顏色。 以下是一些常用的方法。 • LoadFile 方法 將檔案載入RichTextBox 中, 其語法如下: public void LoadFile( string path, RichTextBoxStreamType fileType ) ; 其中path 是檔案名稱與路徑; fileType 是載入檔案的資料流類型, 此參數必須指定一個RichTextBoxStreamType 型別的資料流類型, 以下介紹3 種常用的資料流類型。 • PlainText 包含空格的純文字資料流。

  31. RichText RichText 格式(RTF) 的資料流。 • UnicodePlainText 以Unicode 編碼包含空格的純文字資料流。例如, 以下敘述可載入一純文字檔案, 其檔案路徑與名稱為"c:\CsBook\ch14\doc1.txt"。 richTextBox1.LoadFil e (" c: \ \ CsBook \ \ c h14 \ \ doc1. t x t " , RichTextBoxStreamType.PlainText); • SaveFile 方法 將RichTextBox 的內容儲存至檔案, 其語法如下: public void SaveFile( string path, RichTextBoxStreamType fileType ) ; 其中path 與fileType 同上述的LoadFile 方法。例如, 以下敘述可將RichTextBox 的內容, 以純文字的類型儲存, 其檔案路徑與名稱為"c:CSBookch14doc2.txt"。 richTextBox1. SaveFile (" c : \ \ CsBook \ \ ch14 \ \ doc1. t x t " , RichTextBoxStreamType.PlainText);

  32. Copy 方法 將RichTextBox 中目前選取範圍的文字複製到剪貼簿中。例如, 以下敘述可在richTextBox1 物件中複製目前選取文字。 r i c hTe x tBo x 1 .C o p y ( ) ; • Cut 方法 將RichTextBox 中目前選取範圍的文字移到剪貼簿中。例如, 以下敘述可在richTextBox1 物件中剪下目前選取文字。 r i c h T e x t Bo x 1 .C u t ( ) ; • Paste 方法 將剪貼簿的內容貼入RichTextBox 中。例如, 以下敘述可在richTextBox1物件中執行貼上的動作。 r i c h Te x tB o x 1 . P a s t e ( ) ;

  33. SelectAll 方法 選取RichTextBox 中所有的文字。例如, 以下敘述可選取richTextBox1 物件中的所有文字。 r i c h T e x t b o x 1 . S e l e c t Al l ( ) ; • Undo 方法 將RichTextBox 中上次的編輯作業復原。例如, 以下敘述可復原richTextBox1 物件最近一次的編輯作業。 r i c hTe x t B o x 1 . Undo ( ) ;

  34. Find 方法 搜尋RichTextbox 內容中的文字, 共有7 種多載, 在此僅介紹最常用的一種, 其語法如下: public int Find( string str ) ; 在RichTextBox 中搜尋指定字串, 若找到則傳回符合該字串第一個字元的位置, 否則傳回負值。例如, 以下敘述可在richTextBox1 物件中搜尋字串"Rich"。 r i c hT e x t B o x 1 . F i n d ( "R i c h " ) ; • Focus 方法 設定RichTextBox 的輸入焦點。例如, 以下敘述可於找到"Rich" 字串後,將其設為輸入焦點。 richTextBox1.SelectionStart = richTextBox1.Find("Rich"); richTextBox1.SelectionLength = "Rich".Length; r i c hT e x tB o x 1 . F o c u s ( ) ;

  35. 範例14-9a • 示範RichTextBox 的使用。

  36. 1 4 - 10 對話框 • 在前面章節的程式中, 不論是取檔或存檔以及設定字型等動作, 都是在程式中直接鍵入檔名或字型來完成上述的功能, 如此不僅缺乏彈性, 也尚失了Windows 程式所擁有的高互動性精神, 本節所要介紹的對話框, 即為改善上述缺點, 學會本章的內容, 將可使讀者開發更具互動性的程式。本節將介紹OpenFileDialog (取檔)、SaveFileDialog (存檔)、FontDialog (字型)、ColorDialog (顏色) 等常用的對話框。

  37. OpenFileDialog • OpenFileDialog 可讓使用者透過對話框取得檔案路徑與名稱, 它可取各種類型檔案, 但一般在使用時皆會設定Filter 屬性, 控制所能截取的檔案類型。下圖為OpenFileDialog 對話框。

  38. SaveFileDialog • SaveFileDialog 可讓使用者透過對話框設定儲存檔案的路徑與名稱, 它可設定任何檔案類型, 但一般都會視實際需要而設定Filter 屬性, 控制使用者可存檔類型。下圖為SaveFileDialog 對話框。

  39. 常用屬性與方法 關於以上兩種檔案對話框的常用屬性與方法說明如下: • FileName 屬性 所欲存取的檔案名稱, 若於檔案對話框選取檔案, 會傳回一包含路徑與副檔名的檔名字串; 若沒有選取任何檔案則傳回空字串("")。

  40. Filter 屬性 檔案過濾屬性, 可指定所要存取的檔案類型, 例如上圖之OpenFileDialog對話框, 就設定了BMP 、JPG 及GIF 等3 種檔案類型, 此時使用者在對話框中僅能看見此3 種類型的檔案。以下敘述將示範Filter 屬性的設定方式, 其中說明敘述與篩選條件以及不同篩選項目都以垂直線(|) 隔開; 其次, 同一篩選項目的條件中, 若有多種檔案類型, 可以分號(;) 相隔。 openFileDialog1.Filter = " 影像檔(*.BMP;*.JPG;*.GIF) | *. B M P ; * . JPG; * .GI F | 所有檔案(*.*) | * . * " ;

  41. FilterIndex 屬性 取得或設定檔案對話框中目前所選取之篩選條件的索引編號。 • DefaultExt 屬性 取得或設定預設的副檔名。 • ShowDialog 方法 開啟對話框, 如果使用者按一下對話框中「確定」, 則傳回DialogResult.OK; 否則傳回DialogResult.Cancel 。例如, 以下敘述可開啟openFileDialog1 物件的對話框, 若使用者按下「確定」, 則將檔案載入。 if (openFileDialog1.ShowDialog() == DialogResult.OK) { pictureBox1.Image = Image.FromFile(openFileDialog1.FileName); }

  42. 範例14-10a • 同範例14-8a, 但使用檔案對話框存取影像檔案。

  43. FontDialog FontDialog 如右圖,是一個字型設定的對話框, 其常用的屬性與方法如下: • Color 屬性 取得或設定選取字型的顏色。

  44. Font 屬性 取得或設定選取的字型。 • ShowEffects 屬性 是否顯示指定刪除線、底線和文字色彩等選項。例如, 上圖是字型對話框的ShowEffects 屬性設定為True 的結果; 下圖是ShowEffects 設定為False的結果。

  45. ShowApply 屬性 於對話框中是否顯示" 套用" 按鈕。例如, 右圖含有套用鈕, 上圖則無。

  46. ShowDialog 方法 開啟對話框, 其使用方式與檔案對話框相同, 讀者可參考前面OpenFileDialog 的介紹。例如, 以下程式可將RichTextBox 元件中所選取的文字重設字型。 / / 設定字型 private void mFont_Click(object sender, System.EventArgs e) { f o n tDi a l o g 1 . C o l o r = r i c hTe x tB o x 1 . F o r eC o l o r ; f o n tDi a lo g 1 . F o n t = r i c h Te x tB o x 1 . F o n t ; f o n tDi a l o g 1 . S ho w Ef f e c t s = t r u e ; f o n tDi a l o g 1 . S h o w A p p l y= t r u e ; if(fontDialog1.ShowDialog() == DialogResult.OK) { / / 將當前選定的文字改變字型 r i c hTextBox1.Se l e c t i o n F o n t = f o n tDi a l o g 1 . F o n t ; / / 將當前選定的文字改變顏色 richTextBox1.SelectionColor =fontDialog1.Color; } }

  47. ColorDialog • ColorDialog 如右圖,可以用來設定物件的顏色, 其常用的屬性和方法如下:

  48. Color 屬性 取得或設定使用者所選取的色彩。 • AllowFullOpen 屬性 禁止或啟用自訂色彩按鈕, 下圖左是設定為True 的結果; 下圖右是設定為False 的結果。

  49. FullOpen 屬性 當開啟對話框時, 是否可以看到對話框中用來自訂色彩的部份, 下圖是設定為True 的結果, 上圖左是設定為False 的結果, 使用者必須點選「定義自訂色彩按鈕」才可看到下圖的結果。

  50. ShowDialog 方法 其使用方式同OpenFileDilog 。例如, 以下程式可設定RichTextBox 元件的背景顏色。 / / 設定背景顏色 private void mColor_Click(object sender, System.EventArgs e) { c o l o r Di a lo g 1 . Al l owF u l lOp e n= t r u e ; c o l o rDi a l o g 1 . F u l lOp e n = t r u e ; colorDialog1.Color= richTextBox1.BackColor; if (colorDialog1.ShowDialog() == DialogResult.OK) { richTextBox1.BackColor = colorDialog1.Color; } }

More Related