我用一些面板和图片框制作了一个自定义按钮 . 使用MouseEnter和MouseLeave,我设置适当的悬停图像,如普通按钮 .
问题是如果我在控件上移动鼠标太快,它有时不会触发MouseLeave事件 . 这样,按钮在悬停状态下被“锁定” .
截图问题:http://www.jesconsultancy.nl/images/screens/screen_prblm.png
右侧的按钮被锁定在“悬停”状态 .
我怎么解决这个问题?
谢谢 .
我用一些面板和图片框制作了一个自定义按钮 . 使用MouseEnter和MouseLeave,我设置适当的悬停图像,如普通按钮 .
问题是如果我在控件上移动鼠标太快,它有时不会触发MouseLeave事件 . 这样,按钮在悬停状态下被“锁定” .
截图问题:http://www.jesconsultancy.nl/images/screens/screen_prblm.png
右侧的按钮被锁定在“悬停”状态 .
我怎么解决这个问题?
谢谢 .
2 回答
圣洁......那太乱了!
首先,
UserControl
是非常错误的 . 我建议你让你的控件继承自Control
并自己绘制图像和文本 .其次,你为什么要用反射?
第三,为什么有那么多控件?
这会错过这个事件,因为更新需要太多!
这里有一些简单控制可能的代码,永远不会错过一个事件:
当鼠标离开客户区时,您应该自动收到WM_MOUSELEAVE窗口消息,然后此消息的基类处理将调用OnMouseLeave方法 . 如果这真的没有发生,你当然可以解决它 . 只需直接拦截WM_MOUSEMOVE,然后进行Win32 API调用,请求在鼠标离开控件时通知您 .
使用以下简单的WndProc覆盖...
平台调用您需要的信息是......
希望有所帮助 .