C#实现item自定义颜色的ListBox,显示日志
来源:互联网 发布:长城宽带是什么网络 编辑:程序博客网 时间:2024/05/18 14:13
一、说明
注意,listBox一定要设置成
二、那么就开始实现,添加一个组件继承自ListBox
1.先定义一个结构,用于保存item的index、info和color
2.再定义一个字典,用于保存已经插入的item
3.拓展一下,日志可以无限制的添加,但是我们可以控制显示的最大条数
4.实现两个公共接口
AddLog
创建LogItem并将其添加到m_dicItems中,key就是Add的返回值,即Item在listbox中的位置
Clear
调用ListBox的Clear,同时调用m_dicItem.Clear
5.在实现一个内部的方法,当日志数达到上限时的处理方法
ModefyItems,这个方法的目的就是为了,确保ui显示的内容和m_dicItem中保存的保持一致,那样OnDrawItem才会保证不会绘制有问题
大致思路是,listBox删除0索引的项,m_dicItem中的key不变,value从n+1移到n上,再删除最后一个就ok拉
6.展示一下效果图
ListBox自身的OnDrawItem函数是专门绘制item样式的,只需要重载即可
protected override void OnDrawItem(DrawItemEventArgs e) { e.DrawBackground(); e.DrawFocusRectangle(); // 确保listbox中有日志且该日志被记录在字典中 if (e.Index >= 0 && m_dicItems.Keys.Contains(e.Index)) { e.Graphics.DrawString(m_dicItems[e.Index].info, Font, new SolidBrush(m_dicItems[e.Index].color), e.Bounds); } }
注意,listBox一定要设置成
this.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
二、那么就开始实现,添加一个组件继承自ListBox
1.先定义一个结构,用于保存item的index、info和color
class LogItem { public String info; public int index; public Color color; }
2.再定义一个字典,用于保存已经插入的item
Dictionary<int, LogItem> m_dicItems = new Dictionary<int, LogItem>();
3.拓展一下,日志可以无限制的添加,但是我们可以控制显示的最大条数
private int m_nMaxLength = 1000; [CategoryAttribute("自定义")] [DescriptionAttribute("日志最大显示条数")] public int MaxLength { set { m_nMaxLength = value; } get { return m_nMaxLength; } }
4.实现两个公共接口
public void AddLog(String log, Color color)public void Clear()
AddLog
创建LogItem并将其添加到m_dicItems中,key就是Add的返回值,即Item在listbox中的位置
Clear
调用ListBox的Clear,同时调用m_dicItem.Clear
5.在实现一个内部的方法,当日志数达到上限时的处理方法
ModefyItems,这个方法的目的就是为了,确保ui显示的内容和m_dicItem中保存的保持一致,那样OnDrawItem才会保证不会绘制有问题
大致思路是,listBox删除0索引的项,m_dicItem中的key不变,value从n+1移到n上,再删除最后一个就ok拉
6.展示一下效果图
7.通过上面的步骤,应该都能实现效果了。demo程序及源码下载地址(为懒人而备)
源码下载
阅读全文
0 0
- C#实现item自定义颜色的ListBox,显示日志
- C#中动态修改ListBox的Item的颜色的方法
- C#中动态修改ListBox的Item的颜色的方法
- 重绘ListBox实现特定行显示不同的颜色
- C#中ListBox控件设置Item字体并居中显示
- 带图标和自定义颜色的ListBox
- 带图标和自定义颜色的ListBox
- 带图标和自定义颜色的ListBox
- 怎么改变listbox的item颜色(C#)
- 怎么改变listbox的item颜色(C#)
- listBox自定义颜色字体
- WPF中确保显示ListBox选中的Item
- WPF listBox 显示每个Item的index值
- C#让ListBox适应最大Item的宽度
- Listbox 实现Item双击事件
- C# ListBox显示tooltip
- 带图标和自定义颜色的ListBox yzx110 [原作]
- WPF 自定义listbox的ItemTemplate实现通讯录
- e.target与e.currentTarget的区别
- /usr/bin/ld: cannot find -lxxx 问题解决
- Microsoft Edge真奇怪
- 【Linux】CentOS7安装Python3
- 阿里业务研发经典案例:另类解法,分布式一致性
- C#实现item自定义颜色的ListBox,显示日志
- 虚拟机配置静态ip
- MySQL存储AES_ENCRYPT加密字段
- idea配置MAVEN
- 接口和简单工厂设计模式
- 电路基础学习笔记4:复杂直流电路分析2
- 闭包
- TIMIT数据库
- pcap的用法(转)