![5371a0930f8833bb46bfe1afbb2343f0.png](https://i-blog.csdnimg.cn/blog_migrate/6a02e8aba157e1cdc18dac7eafd566c8.jpeg)
![01cfb8e15cdda59e92109b5a85c1e010.png](https://i-blog.csdnimg.cn/blog_migrate/4dee1030a555357083019cfd7800c311.jpeg)
![ef7ddb57144e5e3dda5e16d60129c69b.gif](https://i-blog.csdnimg.cn/blog_migrate/707fedaa36859be7c60d79020652aa25.gif)
ListBox 在C# winform编程中,使用的比较多,用途也很广,今天带大家一步步的美化ListBox控件。
本文主要实现。
1.奇数行与偶数行颜色交替。
2.选中行颜色。
3.鼠标移动停留行颜色。
4.增加序号
5.增加单选框显示。
前面的若干文章,已经讲解了重绘等一些技巧,这篇文章,理解内容相对比较多,看的小伙伴可以收藏,若碰到问题,欢迎在下方留言。
重绘第一步依然
新建一个类 ,继承ListBox
![a4126c5d340e9f23951fe139052eaa63.png](https://i-blog.csdnimg.cn/blog_migrate/91ae0b5266009424e8283f5bb35df89c.jpeg)
文中写的部分在之前文章提到过,本文不做详细描述,主要就是减少闪烁,双缓存等。
构造函数中内容
public WenListBox() { base.SetStyle( //ControlStyles.UserPaint | ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor, true); base.UpdateStyles(); this.DrawMode = DrawMode.OwnerDrawFixed; this.IntegralHeight = false; }
ControlStyles.UserPaint 此项是所有内容都由用户绘制,一般不用为true。若是需要全部用户自定义绘制。高级重绘,应当此项勾选,本文主要是绘制项,就不把此项设置为true。
私有属性
#region 私有属性 //选中项改变之前的选中项索引 private int selectBefore = -1; private int MouseItemIndex; private bool line = true; private bool radioBox =