如何吸收按键?
How to Absorb a Keypress?
在我的表单上有一个编辑控件。我已经设置了一个 KeyDown
事件来检测用户何时按下 enter,但我还想检测 shift+space 以便用户可以清除框中的内容。
该功能有效 - 我可以检测到按键。问题是 space 没有被吸收,所以 space 字形仍然在控件中键入。
当我按下 shift+space 时,如何吸收按键?
Private Sub FindBox_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyEnter: SearchForIt
Case vbKeySpace:
If Shift = 1 Then
FindBox.Text = ""
'here absorb keypress instead of sending space to control
Exit Sub
End If
End Select
End Sub
哦,我想通了。
很简单。
'here absorb keypress instead of sending space to control
KeyCode = 0
你只需要设置 KeyCode = 0 的值。这将 "swallow" 密钥并且不会发生任何事情。
您还想使用位掩码来查找是否存在按下的 shift
Dim intShiftDown As Integer
intShiftDown = (Shift And acShiftMask) > 0
Case vbKeySpace:
If intShiftDown Then
FindBox.Text = ""
'here absorb keypress instead of sending space to control
KeyCode = 0
Exit Sub
在我的表单上有一个编辑控件。我已经设置了一个 KeyDown
事件来检测用户何时按下 enter,但我还想检测 shift+space 以便用户可以清除框中的内容。
该功能有效 - 我可以检测到按键。问题是 space 没有被吸收,所以 space 字形仍然在控件中键入。
当我按下 shift+space 时,如何吸收按键?
Private Sub FindBox_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyEnter: SearchForIt
Case vbKeySpace:
If Shift = 1 Then
FindBox.Text = ""
'here absorb keypress instead of sending space to control
Exit Sub
End If
End Select
End Sub
哦,我想通了。 很简单。
'here absorb keypress instead of sending space to control
KeyCode = 0
你只需要设置 KeyCode = 0 的值。这将 "swallow" 密钥并且不会发生任何事情。
您还想使用位掩码来查找是否存在按下的 shift
Dim intShiftDown As Integer
intShiftDown = (Shift And acShiftMask) > 0
Case vbKeySpace:
If intShiftDown Then
FindBox.Text = ""
'here absorb keypress instead of sending space to control
KeyCode = 0
Exit Sub