Application.KeyDown 事件 (Visio)

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

语法

表达式KeyDown (KeyCodeKeyButtonStateCancelDefault)

expression:表示 Application 对象的变量。

参数

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

备注

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

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

注意

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

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

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

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

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

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

示例

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

若要运行此示例,请在 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。