Control.MouseMove,Control.DragOver无需鼠标移动即可触发

时间:2018-08-10 15:50:04

标签: .net winforms drag-and-drop c++-cli

我已将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文档似乎并未暗示这种行为(运动事件没有实际运动)。 是否有关于此行为的解释或文档?

0 个答案:

没有答案