【问题标题】:MouseMove Event not behaving as expectedMouseMove 事件未按预期运行
【发布时间】:2014-09-09 12:22:07
【问题描述】:

我正在编写我的第一个代码来处理 WPF / VB.Net 中的拖放事件。

作为一个学习练习,我试图在左键按下按钮控件时启动 DoDragDrop。我认为这将实现如下:

Private Sub ButtonYield_MouseMove(sender As Object, e As MouseEventArgs) Handles ButtonYield.MouseMove

    If e.LeftButton = MouseButtonState.Pressed Then
        'Drag Drop Code Here
        MsgBox("Event Called")
    End If

End Sub

但实际上,只有在鼠标移到按钮控件上方之前按下左键时才会调用此事件。

我在这里缺少一些基本的东西吗?

提前致谢!

【问题讨论】:

    标签: wpf vb.net mousemove


    【解决方案1】:

    这符合预期,您的代码正在检查单击左键时鼠标是否移动。如果单击按钮,则需要跟踪鼠标的时间,然后才在鼠标移动时才进行拖放。这些方面的东西(未经测试):

    Private _mouseDownOverButton As Boolean = False
    
    Private Sub ButtonYield_MouseLeave(sender As Object, e As MouseEventArgs) Handles ButtonYield.MouseLeave
        _mouseDownOverButton = False
    End Sub
    
    Private Sub ButtonYield_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles ButtonYield.MouseLeftButtonDown
        _mouseDownOverButton = True
    End Sub
    
    Private Sub ButtonYield_MouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs) Handles ButtonYield.MouseLeftButtonUp
        _mouseDownOverButton = False
    End Sub
    
    Private Sub ButtonYield_MouseMove(sender As Object, e As MouseEventArgs) Handles ButtonYield.MouseMove
        If _mouseDownOverButton Then
            'drag drop code here
        End If
    End Sub
    

    【讨论】:

    • 完美——填补了我的知识空白
    猜你喜欢
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2020-06-28
    • 2012-02-18
    • 2018-01-18
    • 2012-06-14
    相关资源
    最近更新 更多