UI 自動化事件概觀
注意
本文件適用對象為 .NET Framework 開發人員,其想要使用 System.Windows.Automation 命名空間中定義的受控 UI 自動化類別。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:UI 自動化。
Microsoft UI 自動化事件通知是輔助技術的重要功能,例如螢幕助讀程式和螢幕放大鏡。 這些 UI 自動化用戶端會追蹤 UI 自動化提供者在 UI 發生情況時所引發的事件,並使用此資訊來通知使用者。
藉由允許提供者應用程式選擇性地引發事件來改善效率,取決於是否有用戶端訂閱那些事件或完全沒有,前提是沒有用戶端正在接聽任何事件。
事件的類型
Azure 自動化事件可分類如下。
事件 | 描述 |
---|---|
屬性變更 | UI 自動化元素或控制項模式上的屬性變更時引發。 例如,如果用戶端需要監視應用程式的核取方塊控制項,則它可以註冊,以接聽 ToggleState 屬性上的屬性變更事件。 當選取或取消選取核取方塊控制項時,提供者會引發事件,而且用戶端可視需要採取動作。 |
項目動作 | UI 中的變更是由於使用者或程式設計活動而產生時引發;例如,當按一下按鈕或透過 InvokePattern 叫用按鈕時。 |
結構變更 | UI 自動化樹狀結構的結構變更時引發。 當新的 UI 項目在桌面上可以看見、隱藏不見或遭到移除時,結構即會變更。 |
全域桌面變更 | 發生用戶端感興趣的全域動作時 (例如,焦點從一個項目移到另一個項目時,或當視窗關閉時) 引發。 |
某些事件並不一定表示 UI 的狀態已經變更。 例如,如果使用者切換至文字輸入欄位,然後按一下按鈕以更新欄位,則即使使用者實際上並未變更文字,也會引發 TextChangedEvent
。 在處理事件時,用戶端應用程式可能需要在採取動作之前檢查是否有任何實際變更。
即使 UI 的狀態未變更,也可能引發下列事件。
AutomationPropertyChangedEvent
(取決於已變更的屬性)ElementSelectedEvent
InvalidatedEvent
TextChangedEvent
UI 自動化事件識別碼
Microsoft UI 自動化事件是由 AutomationEvent 物件識別。 Id 屬性包含專門識別事件類型的值。
下表提供 Id 的可能值,以及用於事件引數的類型。 請注意,用戶端和提供者所使用的識別項是來自不同類別的同名欄位。
UI 自動化事件引數
下列類別會封裝事件引數。
類別 | 描述 |
---|---|
AsyncContentLoadedEventArgs | 包含非同步載入內容的相關資訊,包括已完成的載入百分比。 |
AutomationEventArgs | 包含不需要額外資料之簡單事件的相關資訊。 |
AutomationFocusChangedEventArgs | 包含輸入焦點從一個項目變更為另一個項目的相關資訊。 這種類型的事件是由 UI 自動化系統而不是由提供者引發。 |
AutomationPropertyChangedEventArgs | 包含項目或控制項模式之屬性值變更的相關資訊。 |
StructureChangedEventArgs | 包含 UI 自動化樹狀結構中變更的相關資訊。 |
WindowClosedEventArgs | 包含視窗關閉的相關資訊。 |
所有事件引數類別都包含 EventId 成員。 這個識別碼會封裝在 AutomationEvent。
用來識別事件 AutomationEvent 的物件是提供者從 AutomationElementIdentifiers 中的欄位,以及控制模式識別碼類別 (例如 DockPatternIdentifiers) 所取得。 對等欄位是用戶端應用程式從 AutomationElement 中的欄位,以及控制模式類別 (例如 DockPattern) 所取得。
如需事件識別碼的清單,請參閱 UI Automation Events for Clients。