KeyUp 事件

expandtri全部显示

当窗体或控件获得焦点时用户释放按键,此时 KeyUp 事件将发生。在宏中使用 SendKeys 操作或在 Visual Basic 中使用 SendKeys 语句将键击发送到窗体或控件时,该事件也会发生。

Private Sub object_KeyUp(KeyCode As Integer, Shift As Integer)

Object    窗体或窗体上控件的名称。

KeyCode    键代码,如 vbKeyF1(F1 键)或 vbKeyHome(HOME 键)。要指定键代码,请使用“对象浏览器”中显示的固有常量。通过将 KeyCode 设为 0,可以禁止对象接收键击。

Shift    SHIFT、CTRL 和 ALT 键在发生事件时的状态。如果需要测试 Shift 参数,则可以使用以下固有常量之一作为位掩码:

说明

注释  KeyUp 事件仅适用于窗体或窗体上的控件,而不适用于报表上的控件。

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

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

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

如果按住一个键不放,KeyDown 和 KeyPress 事件将交替重复发生(KeyDown、KeyPress、KeyDown、KeyPress 以此类推),直到键释放,然后 KeyUp 事件才发生。

尽管在绝大部分键被按下时都将发生 KeyUp 事件,但它们通常用于识别或区别以下的情况:

?扩展字符键,例如功能键。

 

?定位键,例如 Home、End、Page Up、Page Down、向上键、向下键、向右键、向左键及 Tab。

 

?键的组合和标准的键盘更改键(Shift、Ctrl 或 Alt)。

 

?数字键盘或键盘数字键。

当在以下情况下按键时,KeyDown 事件不发生:

?当窗体有一个 Default 属性设置为“是”的命令按钮时,按 Enter。

?当窗体有一个 Cancel 属性设置为“是”的命令按钮时,按 Esc。

blueup提示

ANSIKeyPress

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

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

如果在按下或发送键后显示一个模式对话框,则 KeyDown 和 KeyPress 事件将发生,但 KeyUp 事件不会发生。

如果窗体或控件具有焦点,那么无论用户何时按下或释放键,都可以使用 KeyDown 或 KeyUp 宏进行响应。但是,宏无法返回键代码和确定按了哪个键,因此通常要用事件过程处理这些事件。

不能在 KeyDown 或 KeyUp 宏中使用 CancelEvent 操作。