比如我想一个按钮同时实现两种点击:
1 单单点击这按钮是一个功能,
2 当Ctrl键被按下的时候点击这个按钮又是另外一个功能. (实际上我是想实现点击list时.但原理应该是一样)
vb好实现吗?
搜到个下面这个代码不行,当窗体中什么控件都没有的时候是有反应,可是甚至一旦添加任何一个控件进窗体,就会没任何反应了,这样看来对我的需求完全没用处:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 17 Then MsgBox "ctrl"
End Sub
用ahk都很容易实现,2句话就行了:
GetKeyState, state, Ctrl
if state = U
谢谢!
------解决方案--------------------------------------------------------
有两个方法:
① 用API:
Option Explicit
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Sub Command1_Click()
Me.Cls
If (GetKeyState(vbKeyControl) And &H8000) Then
Me.Print "Ctrl+单击!"
Else
Me.Print "单击!"
End If
End Sub
② 在设计时,把窗口的 KeyPreview属性设置为True ,然后在Form_KeyDown()、Form_Up()中处理状标识。
这个我就不用写代码了,你应该是会的。
建议用API的方法,这样方便些。
------解决方案--------------------------------------------------------
VB这里不用那么复杂,直接这样就行了
If (Shift And VbCtrlMask) > 0 Then
如果需要测试 shift 参数,可使用该参数中定义各位的 shift 常数。该常数有下列值:
常数 值 描述
vbShiftMask 1 SHIFT 键的位屏蔽。
VbCtrlMask 2 CTRL 键的位屏蔽。
VbAltMask 4 ALT 键的位屏蔽。