程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 制作多色列表框(Multi-color ListBox)

制作多色列表框(Multi-color ListBox)

編輯:.NET實例教程

  最近在做一個程序,設置了一個ListBox,在裡面不斷的更新消息,在WinForm的ListBox中默認的顏色只能是單色的,但我需要不同的消息用不同的顏色顯示,默認的ListBox就不能勝任了。經過一番研究之後,通過代碼成功地實現了。其核心就是不用系統默認的ListBox繪制函數,而是自己重寫。

  首先在窗體設計器中將ListBox的DrawMode屬性改為OwnerDrawFixed,或是直接在代碼的合適位置中添加如下代碼:



this.ListBoxDemo.DrawMode = DrawMode.OwnerDrawFixed;

這個屬性的作用在MSDN裡的解釋是“控件中的所有元素都是手動繪制的,並且元素大小都相等”,意思就是允許用編程人員用代碼編寫控件繪制。

  然後就寫ListBox的DrawItem事件的處理函數:



private void ListBoxDemo_DrawItem(object sender, DrawItemEventArgs e)
...{
    string s = ((ListBox)sender).Items[e.Index].ToString(); //獲取該條目要顯示的文字
    Color vColor;    
    switch (s[0])
    ...{
        case ''w'':vColor = Color.Red;s = s.Substring(1);break;  //warn 
        case ''s'':vColor = Color.Blue; s = s.Substring(1); break;  //success
        case ''f'':vColor = Color.Green; s = s.Substring(1); break;  //fail
        default: vColor = Color.Black; break;
    }
    e.Graphics.DrawString(s, e.Font, new SolidBrush(vColor), e.Bounds); //繪制條目
    e.DrawFocusRectangle();
}

   注:本例中不同類型的消息用不同的顏色繪制,“警告”消息用紅色、“成功”消息用藍色、“失敗”消息用綠色。每種消息之前都用一個字符表示,表明不同的消息種類。然後用Substring(1)方法來去掉第一個字符,以此來正常顯示。以下為效果圖:

用不同顏色顯示ListBox中的Items

用類似的方法還可已設置成間隔的顏色來提高美觀度。

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