winform ListBox设置文字颜色

今天有个需求,ListBox中的项,要根据情况设置不同的颜色,有的红色,有的绿色,怎么设置呢?

直接找ListBox的api,没有,ListBox.Item的api,也没有。

想起去年一个项目中做过类似的功能,翻出来,记录如下:

1. 给ListBox的DrawItem方法绑定事件 drawLog

//给ListBox的DrawItem事件绑定一个方法,取名drawLog
lbLog.DrawItem += new DrawItemEventHandler(drawLog);

2. 定义drawLog方法

private void drawLog(Object sender, DrawItemEventArgs e)
{
     if (lbLog.Items.Count > 0 && lbLog.Items.Count > e.Index)
     {
         if (e.Index < 0)
         { return; }
         string str = lbLog.Items[e.Index].ToString();

         Color foreColor = Color.Black;
         //重点,根据item的具体内容决定颜色
         if (str.Contains("本次测试PASS")) { foreColor = Color.Green; }
         if (str.Contains("本次测试NG")) { foreColor = Color.Red; }
         //重点,画上颜色
         e.Graphics.DrawString(str, e.Font, new SolidBrush(foreColor), e.Bounds);
     }
}

测试发现DrawItem事件没有触发,日志颜色没变化。网上查到了答案:

https://stackoverflow.com/questions/31088713/c-sharp-listbox-drawitem-not-working

要把ListBox的 DrawMode属性设置为 OwnerDrawFixed或者OwnerDrawVariable,才能让DrawItem事件触发。

效果:

问题解决。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹰信息技术服务部

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值