Form.KeyPress 事件 (Access)
当用户按下并释放一个键或组合键对应于 ANSI 代码窗体或控件具有焦点时,将发生 KeyPress 事件。 通过使用 SendKeys 操作的宏或 Visual Basic 中的 SendKeys 语句的 ANSI 键击发送到窗体或控件,也会发生此事件。
语法
表达式。KeyPress (KeyAscii)
expression:表示 Form 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
KeyAscii | 必需 | Integer | 返回数值型 ANSI 键代码。 通过引用传递 KeyAscii 参数;更改该参数可向对象发送不同的字符。 将 KeyAscii 参数设为 0 可取消键击,以便对象不会认为已按下键。 |
备注
若要在该事件发生时运行宏或事件过程,请将 OnKeyPress 属性设置为宏的名称或 [事件过程]。
具有焦点的对象接收所有击键。 窗体只有在它没有控件或它所有可见的控件都失效时才能获得焦点。
窗体也能接收所有的键盘事件,甚至包括那些对控件发生,如果将窗体的 KeyPreview 属性设置为是。 通过设置此属性值,所有键盘事件首先都发生该窗体,然后该控件具有焦点。 无论哪个控件获得焦点,都可以在窗体中对按下的特定键作出响应。 例如,你可能希望组合键 Ctrl+X 始终对窗体执行相同的操作。
如果按住 ANSI 键, 则 KeyDown 和 KeyPress 事件会反复 (KeyDown、 KeyPress、 KeyDown、 KeyPress 等) ,直到释放该键,然后发生 KeyUp 事件。
KeyPress 事件可以涉及任何可打印的键盘字符、Ctrl 键与标准字母表中的字符或特殊字符的组合,以及 Enter 或 Backspace 键。 使用 KeyDown 和 KeyUp 事件过程来处理 KeyPress 事件无法识别的任何击键,例如功能键、导航键以及键盘修饰符 (Alt、Shift 或 Ctrl 键) 的任意组合。 与 KeyDown 事件和 KeyUp 事件, KeyPress 事件并不表明物理状态的键盘;相反,它表示对应于所按下的键或键组合的 ANSI 字符。
KeyPress 将解释的大写和小写的每个字符作为不同的键代码,因此,作为两个字符。
注意
Backspace 键是 ANSI 字符集的一部分,但 Delete 键不是。 如果使用 Backspace 键删除控件中的字符,则会导致 KeyPress 事件;如果使用 Delete 键,则不要。
KeyDown 和 KeyPress 事件发生在按或发送一个 ANSI 键。 任何事件之后, KeyUp 事件发生按下或发送键引起控件。 如果键击导致焦点从一个控件移动到另一个控件,将发生 KeyDown 事件有关的第一个控件的 按键 和 KeyUp 事件发生的第二个控件。
例如,如果移到一个新记录并在记录的第一个控件中键入字符,则下列事件发生:
- 当前 (新的记录)
- 输入 (适用于新记录中的第一个控件)
- GotFocus (用于控制)
- KeyDown (用于控制)
- 按键 (用于控制)
- 插入 (用于在窗体中的新记录)
- 更改 (对于如果是文本框或组合框的控件)
- KeyUp (用于控制)
示例
下面的示例在向文本框中键入文本时将所输入的文本转换为大写,每键入一个字符就转换一个。
若要尝试此示例,请将以下事件过程添加到包含名为 ShipRegion 的文本框的窗体中。
Private Sub ShipRegion_KeyPress(KeyAscii As Integer)
Dim strCharacter As String
' Convert ANSI value to character string.
strCharacter = Chr(KeyAscii)
' Convert character to upper case, then to ANSI value.
KeyAscii = Asc(UCase(strCharacter))
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。