CommandButton.KeyDown 事件 (Access)

当用户按下某个键时窗体或控件具有焦点时,将发生 KeyDown 事件。 如果您在窗体或控件使用 SendKeys 操作的宏或 Visual Basic 中的 SendKeys 语句发送击键,也会发生此事件。

语法

表达式KeyDown (KeyCodeShift)

表达 一个代表 CommandButton 对象的变量。

参数

名称 必需/可选 数据类型 说明
KeyCode 必需 Integer 密钥代码,如 vbKeyF1 (F1 键) 或 vbKeyHome (Home 键) 。 要指定键代码,请使用“对象浏览器”中显示的固有常量。 通过将 KeyCode 设置为 0,可以阻止对象接收击键。
Shift 必需 Integer 事件发生时 Shift、Ctrl 和 Alt 键的状态。 如果需要测试 Shift 参数,可以使用以下内部常量之一作为位掩码:
  • acShiftMask Shift 键的位掩码。

  • acCtrlMask Ctrl 键的位掩码。

  • acAltMask Alt 键的位掩码。

备注

KeyDown 事件仅适用于窗体和窗体上的控件,而不适用于报表上的控件。

若要在这些事件发生时运行宏或事件过程,请将 OnKeyDown 属性设置为宏的名称或 [事件过程]。

对于这两个事件,获得焦点的对象将接收到所有的键击事件。 窗体只有在它没有控件或它所有可见的控件都失效时才能获得焦点。

窗体也能接收所有的键盘事件,甚至包括那些对控件发生,如果将窗体的 KeyPreview 属性设置为是。 通过设置此属性值,所有键盘事件首先都发生该窗体,然后该控件具有焦点。 无论哪个控件获得焦点,都可以在窗体中对按下的特定键作出响应。 例如,你可能希望组合键 Ctrl+X 始终对窗体执行相同的操作。

如果按住某个键, 则 KeyDownKeyPress 事件会反复 (KeyDownKeyPressKeyDownKeyPress 等) ,直到释放该键,然后发生 KeyUp 事件。

尽管在大部分键被按下时,将发生 KeyDown 事件,但它通常用于识别或区别:

  • 扩展字符键,如功能键。

  • 导航键,例如“开始”、“结束”、“PgUp”、“PgDn”、“向上键”、“向下键”、“向右键”、“向左键”和“Tab”。

  • 键和标准键盘修饰符的组合 (Shift、Ctrl 或 Alt 键) 。

  • 数字小键盘和键盘数字键。

当您按下时,就不会发生 KeyDown 事件:

  • 如果窗体有一个命令按钮,其 Default 属性设置为“是”,则为 Enter 键。

  • 如果窗体有一个“ 取消 ”属性设置为“是”的命令按钮,则为 Esc 键。

当您按下或发送一个 ANSI 键,将发生 KeyDown 事件。 任何事件之后, KeyUp 事件发生按下或发送键引起控件。 如果键击导致焦点从一个控件移动到另一个控件,将发生 KeyDown 事件有关的第一个控件的 按键KeyUp 事件发生的第二个控件。

若要找出对应于按下的键的 ANSI 字符,使用 KeyPress 事件。

如果模式对话框显示由于按下或发送键,则 KeyDownKeyPress 事件发生,但不会发生 KeyUp 事件。

示例

以下示例确定是按 Shift、Ctrl 还是 Alt 键。

若要尝试此示例,请将以下事件过程添加到包含名为 KeyHandler 的文本框的窗体中。

Private Sub KeyHandler_KeyDown(KeyCode As Integer, _ 
     Shift As Integer) 
    Dim intShiftDown As Integer, intAltDown As Integer 
    Dim intCtrlDown As Integer 
 
    ' Use bit masks to determine which key was pressed. 
    intShiftDown = (Shift And acShiftMask) > 0 
    intAltDown = (Shift And acAltMask) > 0 
    intCtrlDown = (Shift And acCtrlMask) > 0 
    ' Display message telling user which key was pressed. 
    If intShiftDown Then MsgBox "You pressed the Shift key." 
    If intAltDown Then MsgBox "You pressed the Alt key." 
    If intCtrlDown Then MsgBox "You pressed the Ctrl key." 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。