c#实现ListBox每一列可以有各自的颜色-创新互联
创新互联公司专注于企业成都全网营销推广、网站重做改版、港口网站定制设计、自适应品牌网站建设、成都h5网站建设、商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为港口等各大城市提供网站开发制作服务。
当前名称:c#实现ListBox每一列可以有各自的颜色-创新互联
链接地址:http://ybzwz.com/article/ccdhdg.html
上图是想实现的效果, 注意不是所有行一个颜色
首先把 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://ybzwz.com/article/ccdhdg.html