程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> Visual C#組件技巧之ComboBox美容

Visual C#組件技巧之ComboBox美容

編輯:C#基礎知識

  組合框是組成Windows窗口常見的控件之一,Windows程序員在應用軟件開發中經常要用到組合框。但隨微軟開發工具語言(如C/C++/C#/VB/VF)提供的標准組合框都是同一面孔:組合框中每一項都是字符串,看起來有點灰頭土臉,不那麼賞心悅目(如圖1)。

  圖1

  今天我們就來給組合框美容一下,使組合框中每一項都帶有個性,組合框中每一項即可以讓字符串格式變化多樣,也可以使每一項都帶有各種圖形,同樣也可以讓每一項都帶有圖像等等。

  例1:本例中我們在一個表單上創建三個組合框,從上到下名字分別為comboBox1~comboBox3,通過編程分別讓它們的組合框條目字符串格式發生變化、每項前都有圖形、每項前都有圖像。

  第一步:建立項目

  建立一名為TestComboBox的Windows應用程序(注:應用程序名可以隨意)。

  第二步:界面設計

  本例界面比較簡單,三個label,三個組合框(如圖2所示,從上到上組合框名依次為comboBox1、comboBox2、comboBox3),一個imageList控件(當然表單上看不到,在表單設計圖的下方)請按照如圖2排列。

  圖2

  第三步:控件屬性設置

  (1)把三個label的Text屬性按圖2設置;

  (2)三個comboBox的屬性進行如下設置:

  DrawMode:OwnerDrawFixed;

  DropDownStyle:DropDownList;

  注:這兩個屬性只有如此設置才能保證我們對組合框進行個性化改造,否則的話無論你的程序寫得多麼好,同樣還是"灰頭土臉,不是那麼賞心悅目。

  (3)通過imageList1的Item屬性向imageList增添幾個圖像。

  第四步:編程

  說明:當我們通過組合框的Add方法向組合框添加item時,都會發生組合框的DrawItem事件處理函數來畫組合框item,因此如果我們想創建個性化的組合框只有在DrawItem事件處理函數中做文章了。在編程之前我們需要了解如下的基礎知識。

  (1)在組合框條目中顯示文本時都是利用grphics類的DrawString函數,此函數有多個變體,現把此函數各種形式簡介如下:

  ①public void DrawString(string, Font, Brush, PointF);

  在指定位置並且用指定的 Brush 和 Font 對象繪制指定的文本字符串。

  ②public void DrawString(string, Font, Brush, RectangleF);

  在指定矩形並且用指定的 Brush 和 Font 對象繪制指定的文本字符串。

  ③public void DrawString(string, Font, Brush, PointF, StringFormat);

  使用指定 StringFormat 對象的格式化屬性,用指定的 Brush 和 Font 對象在指定的位置繪制指定的文本字符串。

  ④public void DrawString(string, Font, Brush, RectangleF, StringFormat);

  使用指定 StringFormat 對象的格式化屬性,用指定的 Brush 和 Font 對象在指定的矩形繪制指定的文本字符串。

  ⑤public void DrawString(string, Font, Brush, float, float);

  在指定位置並且用指定的 Brush 和 Font 對象繪制指定的文本字符串。

  ⑥public void DrawString(string, Font, Brush, float, float, StringFormat);

  使用指定 StringFormat 對象的格式化屬性,用指定的 Brush 和 Font 對象在指定的位置繪制指定的文本字符串。

  在本例中我們注意使用第④種。

  (2)在組合框畫矩形時大都使用graphics類的FillRectangle()函數,本例中我們所用的格式如下:

  FillRectangle(brush_name,rectange);

  (3)comboBox1~comboBox3的DrawItem事件處理程序接收一個 DrawItemEventArgs 類型的參數,它包含與此事件相關的數據。下列 DrawItemEventArgs 屬性提供特定於此事件的信息。

  BackColor:獲取所繪制的項的背景色。

  Bounds:獲取表示所繪制項的邊界的矩形。

  Font:獲取分配給所繪制項的字符串格式。

  ForeColor: 獲取所繪制項的前景色。

  Graphics:獲取要在其上繪制項的圖形表面。

  Index:獲取所繪制項的索引值。

  State:獲取所繪制項的狀態。

  有了以上的"基礎知識"我們開始編程了。因為我們想在comboBox1改變字符串格式,在comboBox2中改變每項前的圖形顏色顏色,所以我們需要創建多種字符串格式、多種畫刷。因此我們必須建立兩個ArrayList類型的數組來保存我們創建的字符串格式與畫刷,於是在類的前面添加如下兩句:

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved