如何吸收按键?

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