UIElement.PreviewMouseMove или нет MouseMove ... вот в чем вопрос - PullRequest
1 голос
/ 27 сентября 2010

WPF,
MSDN:

UIElement. PreviewMouseMove Событие

Происходит, когда указатель мыши перемещается, когда мышьуказатель на этот элемент.

Как я вижу, это не так ... Когда I PreviewMouseDown, тогда PreviewMouseUp, вмешивается событие PreviewMouseMove.Это ошибка в Framework или утечке документации MSDN?

Мне просто нужно различать, когда элемент действительно перемещается, и это «статическое» «Move» нарушает мою логику ...

Вызовы функций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 голосов
/ 27 сентября 2010

Используя простые обработчики, я смог получить события PreviewMouseUp и PreviewMouseDown (и LeftButtonUp / Down) для надежного запуска без вмешательства MouseMove.Я подозреваю, что поведение, которое вы видите, заключается в том, что, особенно с современными мышами с высоким разрешением, невозможно не перемещать мышь (даже очень слегка), нажимая на нее.На самом деле, было бы очень глупо предполагать, что ваши пользователи не будут этого делать.Ничто не мешает пользователю перемещать мышь, удерживая кнопку мыши нажатой.

Если вы хотите зарегистрировать последовательность событий только в том случае, если мышь неподвижна, запишите положение мыши и выполняйте действия только при нажатии мышиесли позиция значительно изменилась.

...