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