ListBox DrawItem HotLight 在 OwnerDraw 模式下状态?
我在 WinForms 应用程序中使用 OwnerDrawFixed
作为自定义 ListBox 控件的 DrawMode。
当用户将鼠标悬停在列表框项上时,即在 MouseMove 处,我想重新绘制 ListBoxItem 的背景(或执行其他操作)...
DrawItemState.HotLight
永远不适用于 ListBox,所以我想知道如何模拟它,如何解决这个问题。
I'm using OwnerDrawFixed
as a DrawMode for the custom ListBox control in my WinForms app.
I want to repaint the background (or do some other action) of the ListBoxItem when the user hovers over the listbox item, that is, at the MouseMove...
DrawItemState.HotLight
never works for the ListBox, so i wonder how to emulate it, how to workaround this problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我只花了两年时间就为您找到了答案,但它是:
DrawItemState.HotLight 仅适用于所有者绘制的菜单,不适用于列表框。对于列表框,您必须自己跟踪该项目:
It took me only two years to find the answer for you, but here it is:
The DrawItemState.HotLight only applies to owner drawn menus, not the listbox. For the ListBox, you have to keep track of the item yourself:
这个解决方案只会加重你的代码负担;只需尝试以下操作:
此操作:
e.State And DrawItemState.Selected
验证项目是否悬停。无需放置一整套代码就可以知道悬停的项目。This solution will just weigh your code down; just try this:
This operation:
e.State And DrawItemState.Selected
verifies the item is hovered. No need to put a whole pack of code just to know what item is hovered.