我已将System::Windows::Forms::DataGridView
子类化,以添加一些拖放功能。在调试某些不良行为时,我注意到我附加到DragOver
事件的处理程序被反复调用,即使没有鼠标移动发生。我的键盘上有鼠标模拟功能,可以在拔下实际鼠标的情况下复制其行为,因此我可以保证这不仅是我的鼠标抖动或其他原因。我已经对该类进行了一些日志记录,当我使用键盘鼠标仿真并单击一行时,会看到以下输出:
Debug5: MouseDown left button Debug5: MouseDown recognizing start of drag operation Debug5: MouseMove handling start of drag operation Debug5: HandleDragStart sees selected rows Debug5: HandleDragOver Debug5: HandleDragOver (7 more times, rapid-fire) (...) Debug5: HandleDragDropped Debug5: RaiseItemMoved
我想解决的办法是添加一些代码,以查看自上次鼠标事件分发以来鼠标是否确实已移动,但是我应该期望收到MouseMove
/ DragOver
事件似乎很愚蠢当鼠标没有真正移动时。
到目前为止,我已经阅读的MSDN文档似乎并未暗示这种行为(运动事件没有实际运动)。 是否有关于此行为的解释或文档?