在vb.net中检测鼠标按钮是否已关闭

时间:2015-06-08 17:28:50

标签: vb.net

我不想使用mouseup事件,因为我想允许用户在控件外拖动。我需要通过计时器检查状态。我依旧记得在某些时候使用

这样做
If MouseButtons = MouseButtons.Left Then...

但现在它说MouseButtons是一个类型,不能用作表达式(这是真的,它是枚举类型)。

也许他们改变了一些事情,或者我只记得错了。无论如何,我怎么检查按钮是否仍然按下?

3 个答案:

答案 0 :(得分:0)

您想要的是测试Mouse.LeftButton属性。

答案 1 :(得分:0)

经过试用和测试。我创建了一个新类:testmouseclass并创建了一个共享函数,您可以随时使用该函数来确定LeftMouseButton是否已关闭。这可以通过GetAsyncKeyState调用来实现。

 Imports System.Runtime.InteropServices 'Need to import...

 Public Class testmouseclass

 <DllImport("user32.dll", CharSet:=CharSet.Auto, ExactSpelling:=True)> Public Shared Function GetAsyncKeyState(ByVal vkey As Long) As Long
End Function

Public Shared Function LeftMouseIsDown() As Boolean
    Return GetAsyncKeyState(Keys.LButton) > 0 And &H8000
End Function

 End Class

使用示例

   Private Sub Timer1_Tick(sender As Object, e As System.EventArgs) Handles Timer1.Tick
    If testmouseclass.LeftMouseIsDown() Then MsgBox("It IS!")
   End Sub 

根据计时器的确定,这也很令人头痛。不确定你是如何使用它的,但在我的例子中,我有3秒钟的计时器,当我按住LeftMouseButton时弹出一条消息,当我再次点击它时,由于计时器和左鼠掉了。此外,这项工作甚至超出了您的申请范围......

答案 2 :(得分:0)

If System.Windows.Input.Mouse.LeftButton = Windows.Input.MouseButtonState.Pressed Then