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