Access VBA教程:KeyPress事件

KeyPress事件发生在当窗体或控件获得焦点,然后用户按下并释放一个对应ANSI 代码的键或组合键时。如果在宏中使用SendKeys 操作,或者在 Visual Basic 中使用 SendKeys 语句将 ANSI 键击发送到窗体或控件时,该事件也将发生。

说明

注意   KeyPress事件仅适用于窗体和窗体上的控件,不适用于报表上的控件。

若要在该事件发生时运行宏或事件过程,请将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 字符集的一部分,但是 Del 不是。如果使用 Backspace 来删除控件中的字符,将会导致 KeyPress事件发生,而使用 Del 删除将不会触发该事件。

在按下或发送 ANSI 键时 KeyDown 和 KeyPress事件发生。KeyUp事件则发生在按键或发送键所引起的任一事件之后。如果击键使焦点从一个控件移动到另一个控件,则在第一个控件上 KeyDown事件发生,而在第二个控件上 KeyPress 和 KeyUp事件发生。

例如,如果移到一个新记录并在记录的第一个控件中键入字符,则下列事件发生:

Current(对新记录)    ==>

Enter(对新记录中的第一个控件)  ==>

GotFocus(对控件)  ==>

KeyDown(对控件)  ==>

KeyPress(对控件)  ==>

BeforeInsert(对窗体中的新记录)  ==>

Change(如果是文本框或组合框的控件)  ==>

KeyUp (对控件)

有关详细信息,请参阅击键事件和鼠标单击事件的发生顺序

?

BeforeInsert (for the new record in the form)

?

Change (for the control if it's a text box or combo box)

?

KeyUp (for the control)

For more information, seeOrder of events for keystrokes and mouse clicks.

VBA示例

以下示例将文本框中输入的文本在键入时转换为大写,每键入一个字符就转换一个。

若要试用该示例,请将下列事件过程添加到窗体中,并使窗体中含有一个名为“货主地区”的文本框。


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

上页:Access VBA教程:KeyDown事件 下页:Access VBA教程:KeyUp事件

Access VBA教程:KeyPress事件

Access VBA教程:KeyUp事件 Access VBA教程:Load事件
Access VBA教程:LostFocus事件 Access VBA教程:MouseDown事件
Access VBA教程:作为位掩码的固有常量 Access VBA教程:MouseMove事件
Access VBA教程:MouseUp事件 Access VBA教程:MouseWheel事件
Access VBA教程:NoData事件 Access VBA教程:NotInList事件
Access VBA教程:OnConnect事件 Access VBA教程:OnDisconnect事件
Access VBA教程:Open事件 Access VBA教程:Page事件
Access VBA教程:PivotTableChange事件 Access VBA教程:Print事件
Access VBA教程:Progress事件 (Snapshot Viewer) Access VBA教程:Query事件
Access VBA教程:ReadyStateChange事件 (Snapshot Viewer) Access VBA教程:RecordExit事件
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号