【发布时间】:2014-02-16 00:49:09
【问题描述】:
我试图编写一个继承 ListView 控件的自定义类。到目前为止,我已经添加了一个 OnDrawItem、OnDrawSubItem 和 OnDrawColumnHeader 事件,它允许我绕过标准的 windows 绘图来做一些自定义的事情。
我的控件几乎是我想要实现的 100%,但是,它的最后一部分是向空的 ListView 控件添加自定义消息 - 这是我正在努力解决的问题。尽可能多地阅读听起来我需要添加一个过程来捕获 NM_CUSTOMDRAW 事件并自己做一些绘画(我可能是错的)。基本上,只要我尝试绘制背景,它就会关闭列表项的所有绘制。
由于我对此不是很熟悉,是否有人能够提供一个小示例或提供一些信息的链接,这些信息可能会为我解决这个问题。
我添加了一个 'Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)' 调用来捕获 WM_NOTIFY 消息,但我不确定我是否要进入正确的方向。
我希望简单地在背景上打印一条自定义消息(当为空时)而不影响控件的任何其他绘图。
这可能吗? 任何帮助将不胜感激。谢谢
【问题讨论】:
-
你没有朝着正确的方向前进。一个简单的解决方案是在列表视图的顶部放置一个标签,如果列表视图为空,则将其 Visible 属性设置为 True。
-
还有一个
OnPaintBackground(和OnPaint),在那里你可以做你想做的事。NM_CUSTOMDRAW不是事件也不是消息,而是 lParam 部分,它是指向NMLVCUSTOMDRAW结构的指针。 -
感谢 Plutonix。你介意再详细说明一下吗?