在C#中控制ListBox某一行的字体颜色

简介:

例1

复制代码
private void Form1_Load(object sender, EventArgs e)
{
    listBox1.Items.Add("红色");
    listBox1.Items.Add("黄色");
    listBox1.Items.Add("蓝色");
    listBox1.DrawMode = DrawMode.OwnerDrawFixed; // 属性里设置
}

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    Color vColor = e.ForeColor;
    switch (e.Index)
    {
        case 0: vColor = Color.Red; break;
        case 1: vColor = Color.Yellow; break;
        case 2: vColor = Color.Blue; break;
    }
    e.Graphics.FillRectangle(new SolidBrush(vColor), e.Bounds);
    e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(), e.Font, 
        new SolidBrush(e.ForeColor), e.Bounds);
    e.DrawFocusRectangle();
}
复制代码

 

例2  一种动态渲染颜色的方式

根据字符串的前缀,分别对文字颜色进行渲染。

复制代码
// ListBox DrawItem事件响应函数
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{            
    if (e.Index >= 0)
    {
        e.DrawBackground();
        Brush mybsh = Brushes.Black;
        // 判断是什么类型的标签
        if (listBox1.Items[e.Index].ToString().IndexOf("你好") != -1)
        {
            mybsh = Brushes.Green;
        }
        else if (listBox1.Items[e.Index].ToString().IndexOf("你坏") != -1)
        {
            mybsh = Brushes.Red;
        }
        // 焦点框
        e.DrawFocusRectangle();
        //文本 
        e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, mybsh, e.Bounds, StringFormat.GenericDefault);
    }     
}
复制代码

 

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

 

 

例3 隔行显示不同的颜色

要实现这个效果很简单,只需自定义一个类继承ListBox,然后重写OnDrawItem事件就可以了,下面看代码

  View Code

 效果如下:

 

 

 

 

参考文章

顺德早茶 ,  在C#中控制ListBox某一行的字体颜色

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

gyzskylistbox隔行显示不同颜色

 

2 一种动态渲染颜色的方式
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



   本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6126295.html ,如需转载请自行联系原作者


相关文章
|
7月前
|
C#
C# DEV 关于设置gridview 指定单元格字体为红色
C# DEV 关于设置gridview 指定单元格字体为红色
|
前端开发 API C#
C#使用外部字体、嵌入字体到程序资源中(Winform)及字体的版权问题
应用程序能够使用一个好的字体,是用户界面很重要的一部分,但是很多字体如果系统没有安装,则需要额外引入,这就涉及到极其重要的字体版权问题,及额外字体的使用和安装。最好的方式应该是将字体嵌入到程序中...
3718 1
C#使用外部字体、嵌入字体到程序资源中(Winform)及字体的版权问题
|
4月前
|
存储 搜索推荐 C#
WPF/C#:让绘制的图形可以被选中并将信息显示在ListBox中
WPF/C#:让绘制的图形可以被选中并将信息显示在ListBox中
45 0
|
6月前
|
索引
详细解读c#ListBox控件
详细解读c#ListBox控件
41 0
|
7月前
|
C# 数据库 虚拟化
43.c#:listbox控件
43.c#:listbox控件
56 1
C#编程-134:字体颜色对话框
C#编程-134:字体颜色对话框
130 0
C#编程-134:字体颜色对话框
|
C# 索引
C#(二十九)之C#listBox checkedlistbox imagelist
本篇内容记录了listBox 、checkedlistbox、 imagelist的基本信息。
214 0
C#(二十九)之C#listBox checkedlistbox imagelist
|
数据库 C++ 索引
c#listbox使用详解和常见问题解决
c#listbox使用详解和常见问题解决
378 0
c#listbox使用详解和常见问题解决
|
C#
C# ListBox实现显示插入最新的数据的方法
原文:C# ListBox实现显示插入最新的数据的方法 在我们使用ListBox控件时,如果我们在里面不断的添加一条条数据,但是在我们添加的数据过多超过了ListBox显示的窗口时(此时会产生滑动条), 发现我们无法看到最新添加的数据。
1731 0