我有一个自定义控件,它通过处理事件NumericUpDowns
来使用当前鼠标坐标更新两个。MouseMove
但是,我遇到了一个奇怪的情况,MouseMove
即使这不应该发生,也会触发事件(我已经关闭了无线鼠标并禁用了触控板)。因此,MouseMove
即使鼠标不移动也会发生。
我做了一个简单的检查并验证了在这些“幽灵”MouseMove
事件之间鼠标指针的位置没有改变。我利用这一点来确保仅在指针实际移动时才调用处理事件的方法,因此我已经能够满足我的应用程序的要求。
但是,我仍然感到困惑,因为我不明白当所有鼠标/触控板都被禁用时会触发 MouseMove 事件。查看 Visual Studio 中的调用堆栈,在我看来,MouseMove
事件的触发是“真正的”,就好像鼠标真的移动了一样,而不是好像它是由应用程序的其他部分触发的(例如模拟 a MouseMove
) .
关于这可能是什么原因的任何建议?谢谢!
编辑:按照 King King 的建议,我修改了代码以在每次MouseMove
检测到消息时打印一个字符串。我注意到当鼠标关闭并且指针悬停在控件上时,当我使用 Alt-Tab 在应用程序之间切换时会打印字符串。也许这与正在重绘的应用程序有关?