是否可以自定义绘制ListViewGroup

时间:2010-11-20 05:51:15

标签: c# winforms listview

我在.NET 2.0上使用System.Windows.Forms.ListView控件。我知道我可以将ListView上的OwnerDraw属性设置为true,然后重写OnDrawItem以自定义绘制我的ListViewItems。我还可以覆盖OnDrawColumnHeader和OnDrawSubItem来绘制这些组件。

但是,如果我想自定义绘制ListViewGroups,则没有等效的“OnDrawGroup”方法。

我简要介绍了这个控件使用的消息,我看到有WM_CUSTOMDRAW和CDDS_ITEMPREPAINT通知,但是我想知道如果我处理这些本机消息以自定义绘制我的ListViewGroups有什么方法吗?

2 个答案:

答案 0 :(得分:2)

我不相信使用内置机制是可行的。我想你必须自己画一切。

答案 1 :(得分:2)

它无法完成。

您无法通过自己绘制所有内容,或通过下拉处理WM_CUSTOMDRAW甚至使用undocumented ListView interfacesused here来完成此操作。

这次讨论多次出现(here for example)。 ListView中的群组标头是奇怪的野兽。在XP中,你最多可以设置它们的颜色(甚至不是它们的字体),但是从Vista开始,你无法对它们做任何事情。