如何检测wpf中滚动鼠标的时间

时间:2011-10-07 13:11:17

标签: wpf listbox drag-and-drop

我有2个列表框,我将项目从一个拖到另一个。 问题是当滚动在列表框上可见时,如果我点击滚动向上/向下移动,它会再次开始拖动。 有没有办法检测鼠标何时在滚动区域上方,以便我可以阻止它启动拖动操作?

以下是代码:

Private Sub lstbox_PreviewMouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) 'Handles lstFieldsAvailable.PreviewMouseLeftButtonDown
    _mouseDownPos = e.GetPosition(Nothing)
    _isMouseDown = True
    _mouseDownSource = sender
End Sub

Private Sub lstbox_PreviewMouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) 'Handles lstFieldsAvailable.PreviewMouseMove
    Dim mousePos As Point = e.GetPosition(Nothing)
    Dim diff As Vector = _mouseDownPos - mousePos
    Dim lstbox As ListBox = CType(sender, ListBox)

    If _isMouseDown And e.LeftButton = MouseButtonState.Pressed And lstbox.SelectedItems.Count > 0 And _
        lstbox.IsMouseOver And _
        (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance Or _
         Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance) Then

        'get the selected items
        Dim dragData As New DragDataStruct(lstbox)
        For Each item As String In lstbox.SelectedItems
            dragData.Items.Add(item)
        Next

        DragDrop.DoDragDrop(lstbox, dragData, DragDropEffects.Move)

    End If
End Sub

1 个答案:

答案 0 :(得分:0)

你真的必须将ListBox设置为拖动源......

你不能使用ListBoxItem作为拖动源吗?如果您这样做,那么ListBoxItem将自动从其可拖动区域中排除滚动条。

相关问题