1 原理
微软的FCL的WinForm部分提供了大量的UI控件,控件本身设计的非常精妙,其OwnerDraw属性设置为false(默认)时,控件自身会采用默认值进行自动绘制,如果为true时,则在控件自身需要绘制时,发送事件给父窗体,为程序员提供自行编写绘制代码的机会。
2 代码
首先是设置 listView1的Owner属性为true并且把View属性设置为Details,然后是为DrawColumnHeader、DrawItem、DrawSubItem事件增加处理函数,最后是在处理函数中实现个性化的绘制。
this.listView1.OwnerDraw = true;
this.listView1.View = System.Windows.Forms.View.Details;
this.listView1.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.listView1_DrawColumnHeader);
this.listView1.DrawItem += new System.Windows.Forms.DrawListViewItemEventHandler(this.listView1_DrawItem);
this.listView1.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.listView1_DrawSubItem);
//以上两步可以通过VS开

本文介绍了如何利用FCL(框架类库)在WinForm中设置ListView控件的列头和SubItem颜色。当OwnerDraw属性设为true时,可以通过捕获绘制事件来自定义控件样式。文章包含原理解析、具体代码实现以及实验结果展示。


被折叠的 条评论
为什么被折叠?



