实现ListView的SubItem重绘
微软自带的Listview可以默认在第一列自带图标,现在要想在其他列也有这种效果,就得用到重绘。
重载的事件OnDrawSubItem/OnDrawItem/OnDrawColumnHeader的参数中,都有e.DrawDefault这个属性,默认是e.DrawDefault == false,只要把它设置为true提供的功能就是允许用户在开启用户绘画模式下依然画出原来的内容。
1protected override void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e)
2{
3 e.DrawDefault = true;
4 base.OnDrawColumnHeader(e);
5}
6//重载OnDrawSubItem,并且在合适的SubItem上重绘你要的内容:
7protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e)
8{
9 if (e.Header.Index != needSubItemIndex) //needSubItemIndex指定要重绘的列
10 {
11 e.DrawDefault = true;
12 base.OnDrawSubItem(e);
13 }
14 else
15 {
16 //e.DrawBackground(); e.DrawText(); 画上想要画的东西
17 }
18}
19
2{
3 e.DrawDefault = true;
4 base.OnDrawColumnHeader(e);
5}
6//重载OnDrawSubItem,并且在合适的SubItem上重绘你要的内容:
7protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e)
8{
9 if (e.Header.Index != needSubItemIndex) //needSubItemIndex指定要重绘的列
10 {
11 e.DrawDefault = true;
12 base.OnDrawSubItem(e);
13 }
14 else
15 {
16 //e.DrawBackground(); e.DrawText(); 画上想要画的东西
17 }
18}
19