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.DrawListViewSubItem