1


0

UIElement.PreviewMouseMoveまたはMouseMoveではない…​ それが問題です

WPF、MSDN:

_ _ * UIElement.http://msdn.microsoft.com/en-us/library/system.windows.uielement.previewmousemove.aspx [PreviewMouseMove]イベント*

マウスポインターがこの要素上にあるときにマウスポインターが移動すると発生します。 _ _

私が見ることができるように、これは真実ではありません…​ 「PreviewMouseDown」、次に「PreviewMouseUp」のとき、「PreviewMouseMove」イベントが干渉します。 これは、FrameworkまたはMSDNのドキュメントリークのバグですか?

要素が実際に移動するタイミングを区別する必要があるだけで、この「静的な」「移動」は私のロジックを壊します…​

関数呼び出しログ:

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 Answer


0


簡単なハンドラーを使用して、PreviewMouseUpおよびPreviewMouseDown(およびLeftButtonUp / Down)イベントを取得して、MouseMoveが干渉することなく確実に起動することができました。 あなたが見ている行動は、特に現代の高解像度マウスでは、クリック中にマウスを動かさないこと(ごくわずかでも)が不可能だからだと思います。 実際、ユーザーがそうしないと考えるのは非常に愚かなことです。 ユーザーがマウスボタンを押したままマウスを動かすのを妨げるものは何もありません。

マウスが静止している場合にのみイベントシーケンスを登録する場合は、マウスダウンで位置を記録し、位置が大幅に変更された場合にのみマウスでアクションを実行します。