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

在vb.net中检测鼠标按钮是否已按下,vb.net,Vb.net,我不想使用mouseup事件,因为我想允许用户拖动到控件之外。我需要通过计时器检查状态。我模模糊糊地记得以前曾使用 If MouseButtons = MouseButtons.Left Then... 但现在它说MouseButtons是一种类型,不能用作表达式(没错,它是一种枚举类型) 也许他们改变了事情,也许我只是记错了。。无论哪种方式,我如何检查按钮是否仍处于关闭状态?您需要的是测试属性 这是经过尝试和测试的。我创建了一个新类:testmouseclass,并创建了一个共享函数,您可以

我不想使用mouseup事件,因为我想允许用户拖动到控件之外。我需要通过计时器检查状态。我模模糊糊地记得以前曾使用

If MouseButtons = MouseButtons.Left Then...
但现在它说MouseButtons是一种类型,不能用作表达式(没错,它是一种枚举类型)


也许他们改变了事情,也许我只是记错了。。无论哪种方式,我如何检查按钮是否仍处于关闭状态?

您需要的是测试属性

这是经过尝试和测试的。我创建了一个新类: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

根据计时器的滴答声,这也可能是一个令人头痛的问题。不确定您是如何使用此功能的,但在我的示例中,计时器为3秒,当我按住
LeftMouseButton
时,会弹出一条消息,当我再次单击它时,它会再次弹出,因为计时器和左鼠标已关闭。而且这项工作甚至超出了你的应用范围

没有可用的鼠标类。我是从主窗体以外的类编写的。@user81993您可能需要
导入System.Windows.Input
(在文件的最顶端)。System.Windows.Input中唯一可用的是一个名为ICommand的接口,您正在构建什么类型的项目(WinForms、WPF、console等)?仅.net 4.5
MouseButtons
中的常规winforms exe是
Form
类的共享属性。使用完全限定的名称空间
If(MouseButtons=System.Windows.Forms.MouseButtons.Left),然后通过IntelliSense生成相同的答案
。将LHS更改为
System.Windows.Forms.Form.MouseButtons
。然后关闭并重新打开vs>清除>重建。我这样做了,它成功了。您需要添加一个映像、显示堆栈跟踪、确切的错误消息、编译器/应用程序配置/信息。2012年5月8日至10月15日?:net 1/2/3.5/4/4.5?由于信息太少,请阅读。
If System.Windows.Input.Mouse.LeftButton = Windows.Input.MouseButtonState.Pressed Then
If System.Windows.Input.Mouse.LeftButton = Windows.Input.MouseButtonState.Pressed Then