C#中动态修改ListBox的Item的颜色的方法

转载连接: http://blog.csdn.net/cumtwys/article/details/38087421

 

 

最近搞了C#需要在ListBox中显示不同类型的数据,为了让用户容易区分,增加了颜色区分的功能,就是需要不同的类型数据显示出不同的颜色。针对上述的要求我们需要使用控件的重绘方法,就是用重绘的方法激活重绘事件,在重绘事件内修改Item的字体颜色。方法如下(基于DrawItem事件)

一、新建一个C#的窗口应用程序,在form1内添加一个ListBox控件,一个TextBox控件,一个按钮控件;我们要求如下:按一次按钮将文本框内的内容添加到ListBox内,并且ListBox在显示的时候根据Item的内容显示不同的颜色,比如添加的Item内包含了"你好",那么这个Item用绿色来显示;如果包含了"你坏"用色来表示。界面如下图所示:

二、界面准备完成,我们需要对ListBox控件的属性进行修改,才能使ListBox控件支持DrawItem的事件,我们要在ListBox控件的【DrawMode】属性修改为下图中的任意一个,具体的区别还没有深入研究,我选择的是【OwnerDrawFixed】属性,如下图:

三、还是要选中ListBox控件,在【事件】属性栏内找到【DrawItem】事件,双击,便在CS文件添加了该控件的DrawItem事件的处理函数。如下图

四、添加相应的处理【一】中需求的方法,比如按钮事件,获取文本框的文本并显示在ListBox内;

五、详细源码

 

[csharp] view plain copy

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9.   
  10. namespace TestListBoxColor  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         public Form1()  
  15.         {  
  16.             InitializeComponent();  
  17.         }  
  18.   
  19.         // ListBox DrawItem事件响应函数  
  20.         private void listBox1_DrawItem(object sender, DrawItemEventArgs e)  
  21.         {              
  22.             if (e.Index >= 0)  
  23.             {  
  24.                 e.DrawBackground();  
  25.                 Brush mybsh = Brushes.Black;  
  26.                 // 判断是什么类型的标签  
  27.                 if (listBox1.Items[e.Index].ToString().IndexOf("你好") != -1)  
  28.                 {  
  29.                     mybsh = Brushes.Green;  
  30.                 }  
  31.                 else if (listBox1.Items[e.Index].ToString().IndexOf("你坏") != -1)  
  32.                 {  
  33.                     mybsh = Brushes.Red;  
  34.                 }  
  35.                 // 焦点框  
  36.                 e.DrawFocusRectangle();  
  37.                 //文本   
  38.                 e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, mybsh, e.Bounds, StringFormat.GenericDefault);  
  39.             }       
  40.         }  
  41.   
  42.         private void button1_Click(object sender, EventArgs e)  
  43.         {  
  44.             string str = this.textBox1.Text;  
  45.   
  46.             this.listBox1.Items.Add(str);  
  47.         }  
  48.     }  
  49. }  

六、效果如下,当输入“你好”并按添加按钮的时候相应的ListBox的内容变为的绿色,输入“你坏”的时候变为了红色,达到了我们的要求目的:

 

OK,到此结束,希望对有这种需求的人有帮助。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值