Visio (的 Window.KeyPress 事件)

會在按下鍵盤按鍵時發生。

語法

運算式KeyPress (KeyAsciiCancelDefault)

表達 代表 Window 物件的變數。

參數

名稱 必要/選用 資料類型 描述
KeyAscii 必要 Long 所按按鍵的 ASCII 值。 可以是任何 ASCII 字元碼。
CancelDefault 必要 布林值 False 表示 Microsoft Visio 應該處理從這個事件收到的訊息,否則為 True

註解

如果您將 CancelDefault 設為 True,則 Visio 不會處理按下滑鼠按鍵時所接收的訊息。

不同于其他 Visio 事件, KeyPress 沒有前置詞 Query,但它仍然是查詢事件。 也就是說,您可以取消處理 KeyPress所傳送的訊息,方法是將 CancelDefault 設定為 True,或者,如果您使用 VisEventProc 方法來處理事件,則傳回 True。 如需詳細資訊,請參閱本自動化參考中有關 VisEventProc 方法以及任何查詢事件 (例如 QueryCancelSuspend 事件) 的主題。

注意事項

按下快速鍵組合,例如 Ctrl+C,並不會引發 KeyPress 事件。

如果您是使用 Microsoft Visual Basic 或 Visual Basic for Applications (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

儲存文件以初始化類別,然後按任意鍵觸發 KeyPress 事件。 在 [即時運算] 視窗中,處理常式會列印按下按鍵的 ASCII 碼以觸發事件。

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應