c#实现ListBox每一列可以有各自的颜色-创新互联

创新互联公司专注于企业成都全网营销推广、网站重做改版、港口网站定制设计、自适应品牌网站建设、成都h5网站建设商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为港口等各大城市提供网站开发制作服务。

上图是想实现的效果, 注意不是所有行一个颜色

首先把  listbox 的 DrawMode 属性 改为 OwnerDrawFixed

然后 override listbox 的 函数 DrawItem  系统重命名为 listBox1_DrawItem

   private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
        {


            e.DrawBackground();          //先调用基类实现

if (e.Index < 0)            //form load 的时候return
return;
            
            //因为此函数每一个 listItem drawing 都要调用, 所以不能简单的只写e.Graphics.DrawString(listBox1.Items[e.Index].ToString(),e.Font, Brushes.Red, e.Bounds);
       //那样会造成所有item一个颜色
//这里是用item字符串是否包含某些词决定的 , 不好 if (listBox1.Items[e.Index].ToString().Contains("error")) { e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, Brushes.Red, e.Bounds); } else if (listBox1.Items[e.Index].ToString().Contains("warn")) { e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, Brushes.Red, e.Bounds); } else { e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(), e.Font, Brushes.Black, e.Bounds); } }

分享文章:c#实现ListBox每一列可以有各自的颜色-创新互联
转载来源:http://scyanting.com/article/ccdhdg.html