UIElement.PreviewMouseMove与否MouseMove ......这就是问题所在

时间:2010-09-27 16:27:38

标签: wpf events wpf-controls mouseevent

WPF,
MSDN:

  

UIElement。PreviewMouseMove活动

     

鼠标指针移动时发生   而鼠标指针在此上方   元件。

正如我所看到的,这不是真的...当我PreviewMouseDown,然后PreviewMouseUp时,PreviewMouseMove事件会发生干扰。这是Framework或MSDN文档漏洞中的错误吗?

我只需要区分一个元素何时真正移动,而这个“静态”“移动”会破坏我的逻辑......

函数调用log:

Function: MyCanvas.OnPreviewMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs), Thread: 0x6F4 Main Thread
Function: MyCanvas.OnPreviewMouseMove(System.Windows.Input.MouseEventArgs), Thread: 0x6F4 Main Thread
Function: MyCanvas.OnPreviewMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs), Thread: 0x6F4 Main Thread
Function: MyCanvas.OnPreviewMouseMove(System.Windows.Input.MouseEventArgs), Thread: 0x6F4 Main Thread

以前的日志是在获取DoubleClick事件时获得的,因此,我不认为我用鼠标移动了鼠标......

1 个答案:

答案 0 :(得分:0)

使用简单的处理程序,我能够在没有MouseMove干扰的情况下可靠地触发PreviewMouseUp和PreviewMouseDown(以及LeftButtonUp / Down)事件。我怀疑你所看到的行为是因为,特别是对于现代高分辨率鼠标,单击它时不可能不移动鼠标(甚至非常轻微)。实际上,假设您的用户不会这样做是非常愚蠢的。没有什么能阻止用户在按住鼠标按钮的同时移动鼠标。

如果您只想在鼠标静止时注册事件序列,请在鼠标按下时记录位置,如果位置发生显着变化,则仅在鼠标按键上执行操作。