Visio) (Application.KeyDown 事件

按键盘键时,发生此事件。

语法

表达式。KeyDown (KeyCode, KeyButtonState, CancelDefault)

expression:表示 Application 对象的变量。

参数

名称 必需/可选 数据类型 说明
KeyCode 必需 Long 按下的键。 在 密钥代码常量中声明可能值。
KeyButtonState 必需 Long 事件的 Shift 和 Ctrl 键的状态。 可以是 VisKeyButtonFlags 中声明的值的组合。 例如,如果 KeyButtonState 返回 12,则表示用户同时按住了 Shift 和 Ctrl。
CancelDefault 必需 Boolean 如果 Microsoft Visio 应处理从此事件接收的消息,则为 False;否则为 True。

备注

如果将 CancelDefault 设置为 True,Visio 将不对单击鼠标键时收到的消息进行处理。

与其他一些 Visio 事件不同, KeyDown 没有前缀 查询,但它仍是一个查询事件。 也就是说,您可以通过将 CancelDefault 设置为 True,或者,如果您使用 VisEventProc 方法处理事件,则通过返回 True 来取消处理 KeyDown 发送的消息。 有关详细信息,请参阅 VisEventProc 方法和任何查询事件 (主题,例如 QueryCancelSuspend 事件) 。

注意

按加速键组合(例如 Ctrl+C)不会触发 KeyDown 事件。

如果您使用 VBA,则此主题中的语法描述的是一种通用而有效的事件处理方法。

如果要创建自己的 Event 对象,请使用 Add 或 AddAdvise 方法。

若要创建可运行加载项的 Event 对象,请使用 Add 方法,因为它适用于 EventList 集合。

若要创建可接收通知的 Event 对象,请使用 AddAdvise 方法。

若要查找要创建的事件的事件代码,请参阅事件代码。

示例

此类模块演示如何定义名为 KeyboardListener 的同步类,该类可侦听活动窗口中键盘操作触发的事件。 它通过使用 WithEvents 关键字来声明对象变量 vsoWindow。 该类模块还包含 KeyDown、KeyPress 和 KeyUp 事件的事件处理程序。

若要运行此示例,请在 VBA 项目中插入一个新的类模块,将其命名为 KeyboardListener,并在该模块中插入以下代码。

Dim WithEvents vsoWindow As Visio.Window 
 
Private Sub Class_Initialize() 
 
 Set vsoWindow = ActiveWindow 
 
End Sub 
 
Private Sub Class_Terminate() 
 
 Set vsoWindow = Nothing 
 
End Sub 
 
Private Sub vsoWindow_KeyDown(ByVal KeyCode As Long, ByVal KeyButtonState As Long, CancelDefault As Boolean) 
 
 Debug.Print "KeyCode is "; KeyCode 
 Debug.Print "KeyButtonState is" ; KeyButtonState 
 
End Sub 
 
Private Sub vsoWindow_KeyPress(ByVal KeyAscii As Long, CancelDefault As Boolean) 
 
 Debug.Print "KeyAscii value is "; KeyAscii 
 
End Sub 
 
Private Sub vsoWindow_KeyUp(ByVal KeyCode As Long, ByVal KeyButtonState As Long, CancelDefault As Boolean) 
 
 Debug.Print "KeyCode is "; KeyCode 
 Debug.Print "KeyButtonState is" ; KeyButtonState 
 
End Sub

然后,在 ThisDocument 项目中插入以下代码。

Dim myKeyboardListener As KeyboardListener 
 
Private Sub Document_DocumentSaved(ByVal doc As IVDocument) 
 
 Set myKeyboardListener = New KeyboardListener 
 
End Sub 
 
Private Sub Document_BeforeDocumentClose(ByVal doc As IVDocument) 
 
 Set myKeyboardListener = Nothing 
 
End Sub

保存文档以初始化该类,然后按任意键触发 KeyDown 事件。 在“即时”窗口中,处理程序打印为触发事件而按下的键的代码,以及触发事件时 Shift 和 Ctrl 键的状态。

支持和反馈

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