如何在VB.NET中跟踪鼠标单击和拖动事件?

Vol*_*ort 4 .net vb.net mouse mouseevent drag

首先,我想知道鼠标是否在某个区域.然后,我想检查鼠标是否按住左键.我想检查只要左按钮关闭,我想跟踪鼠标的位置.最后,检查左按钮何时释放.

那么,简而言之,我应该从哪里开始跟踪表单中的鼠标事件?

Jos*_*osh 6

一般来说,当鼠标按下事件发生时,需要捕获鼠标。然后,即使鼠标离开捕获鼠标的控件区域,您也会收到鼠标移动事件。您可以计算鼠标移动事件中的增量。当增量第一次超过系统定义的“拖动区域”时,就会发生拖动。当接收到鼠标松开事件时,停止拖动操作。

在 Windows 窗体中,查看 Control 类上的 MouseDown、MouseMove 和 MouseUp 事件。MouseEventArgs 将包含 X/Y 坐标。要捕获或释放鼠标,请将 Capture 属性分别设置为 true 或 false。如果不捕获鼠标,则当鼠标在控件边界之外释放时,您将不会收到 MouseMove 或 MouseUp 事件。

最后,要确定开始拖动操作之前允许鼠标移动的最小“距离”,请查看 SystemInformation.DragSize 属性。

希望这可以帮助。


小智 5

这是一个用于检测拖动或单击的简单代码

Public IsDragging As Boolean = False, IsClick As Boolean = False
Public StartPoint, FirstPoint, LastPoint As Point
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picBook.Click
    If IsClick = True Then MsgBox("CLick")
End Sub

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseDown
    StartPoint = picBook.PointToScreen(New Point(e.X, e.Y))
    FirstPoint = StartPoint
    IsDragging = True
End Sub

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseMove
    If IsDragging Then
        Dim EndPoint As Point = picBook.PointToScreen(New Point(e.X, e.Y))
        IsClick = False
        picBook.Left += (EndPoint.X - StartPoint.X)
        picBook.Top += (EndPoint.Y - StartPoint.Y)
        StartPoint = EndPoint
        LastPoint = EndPoint
    End If
End Sub

Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseUp
    IsDragging = False
    If LastPoint = StartPoint Then IsClick = True Else IsClick = False
End Sub
Run Code Online (Sandbox Code Playgroud)