当用户按下并释放一个键或组合键对应于 ANSI 代码窗体或控件具有焦点时,将发生
KeyPress
事件。 通过使用 SendKeys 操作的宏或 Visual Basic 中的
SendKeys
语句的 ANSI 键击发送到窗体或控件,也会发生此事件。
表达式
。
KeyPress
(
KeyAscii
)
表达
一个代表
CheckBox
对象的变量。
必需/可选
若要在该事件发生时运行宏或事件过程,请将
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, and then to ANSI value.
KeyAscii = Asc(UCase(strCharacter))
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。