グリッド内の四角形のコントロールがあります。グリッド内のあるセルから別のセルに長方形をドラッグすることができます。しかし、編集ダイアログを表示するには、四角形をダブルクリックする必要もあります。ここで問題となるのは、四角形の上でマウスの左ボタンを押すだけでMouseMove
イベントが開始され、望ましくないときにDragDrop
が開始されることです。WPF - MouseDoubleClickでDragDropをしない方法は?
ここMouseMove
とMouseDoubleClick
イベントハンドラです:
Dim IsDragging As Boolean = False
Private Sub SchedItem_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
If IsDragging Then Exit Sub
If e.LeftButton = MouseButtonState.Pressed Then
Dispatcher.InvokeAsync(Sub()
IsDragging = True
DragDrop.DoDragDrop(Me, Me, DragDropEffects.Move)
IsDragging = False
End Sub)
End If
End Sub
Private Sub SchedItem_PreviewMouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles Me.PreviewMouseDoubleClick
itmEditTask_Click(Nothing, Nothing)
e.Handled = True
End Sub
私はマウスがMouseLeftButtonDown
イベント後の走行した距離を決定するために試みることによってMouseMove
を開始しないで試してみましたが。しかし、x &の数字はどこにでもあり、私はしきい値を確実に設定できません。そのコードは次のとおりです。
Private mPos As Point
Private Sub SchedItem_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonDown
mPos = Mouse.GetPosition(Nothing)
End Sub
Private Function IsReallyMouseMove() As Boolean
Dim pPos As Point = Mouse.GetPosition(Nothing)
Debug.WriteLine(Math.Abs(mPos.X - pPos.X) & ", " & Math.Abs(mPos.Y - pPos.Y))
IsReallyMouseMove = Math.Abs(mPos.X - pPos.X) > 10 OrElse Math.Abs(mPos.Y - pPos.Y) > 10
End Function
だから私は誰かがこれを行い、ある方向性を提供してくれることを望んでいます。