共用方式為


UI 自動化事件概觀

備註

本檔適用於想要使用 System.Windows.Automation 命名空間中定義的受控UI自動化類別的 .NET Framework 開發人員。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:使用者介面自動化

Microsoft UI 自動化事件通知是輔助技術的重要功能,例如螢幕助讀程式和螢幕放大鏡。 這些使用者介面自動化用戶端會追蹤UI自動化提供者在UI發生狀況時所引發的事件,並使用資訊來通知使用者。

效率的提升在於允許提供者應用程式根據是否有用戶端訂閱這些事件來選擇性地引發事件,如果沒有用戶端在聆聽任何事件,則不引發事件。

事件類型

UI 自動化事件分為下列類別。

事件 說明
屬性變更 當UI自動化元素或控制模式的屬性變更時觸發。 例如,如果用戶端需要監控應用程式的核取方塊控制項,可以註冊來監聽 ToggleState 屬性的變更事件。 當核取方塊被勾選或取消勾選時,提供者會觸發事件,客戶端可以視需要採取行動。
元素動作 當使用者或程式活動導致UI變更時觸發;例如,當按鈕被點擊或透過InvokePattern叫用時。
結構變更 當 UI 自動化樹狀結構變更時引發。 當新的UI項目在桌面上可見、隱藏或移除時,結構就會變更。
全域桌面變更 當發生與客戶端相關的重要動作時如焦點從一個元素移轉到另一個元素或視窗關閉時便會觸發。

某些事件不一定表示UI的狀態已變更。 例如,如果使用者切換到文字輸入欄位,然後按下按鈕來更新欄位,即使使用者未實際變更文字,也會觸發 TextChangedEvent。 處理事件時,用戶端應用程式可能需要先檢查是否實際上有任何變化,再採取動作。

即使UI的狀態未變更,也可能引發下列事件。

  • AutomationPropertyChangedEvent (視已變更的屬性而定)

  • ElementSelectedEvent

  • InvalidatedEvent

  • TextChangedEvent

UI 自動化事件標識碼

Microsoft使用者介面自動化事件是由 AutomationEvent 對象識別。 屬性 Id 包含可唯一識別事件種類的值。

下表中給出了Id的可能值以及用於事件參數的類型。 請注意,用戶端和提供者所使用的標識碼是來自不同類別但名稱相同的字段。

用戶端識別碼 提供者標識碼 事件自變數類型
AutomationElement.AsyncContentLoadedEvent AutomationElementIdentifiers.AsyncContentLoadedEvent AsyncContentLoadedEventArgs
SelectionItemPattern.ElementAddedToSelectionEvent

SelectionItemPattern.ElementRemovedFromSelectionEvent

SelectionItemPattern.ElementSelectedEvent

SelectionPattern.InvalidatedEvent

InvokePattern.InvokedEvent

AutomationElement.LayoutInvalidatedEvent

AutomationElement.MenuClosedEvent

AutomationElement.MenuOpenedEvent

TextPattern.TextChangedEvent

TextPattern.TextSelectionChangedEvent

AutomationElement.ToolTipClosedEvent

AutomationElement.ToolTipOpenedEvent

WindowPattern.WindowOpenedEvent
SelectionItemPatternIdentifiers.ElementAddedToSelectionEvent

SelectionItemPatternIdentifiers.ElementRemovedFromSelectionEvent

SelectionItemPatternIdentifiers.ElementSelectedEvent

SelectionPatternIdentifiers.InvalidatedEvent

InvokePatternIdentifiers.InvokedEvent

AutomationElementIdentifiers.LayoutInvalidatedEvent

AutomationElementIdentifiers.MenuClosedEvent

AutomationElementIdentifiers.MenuOpenedEvent

TextPatternIdentifiers.TextChangedEvent

TextPatternIdentifiers.TextSelectionChangedEvent

AutomationElementIdentifiers.ToolTipClosedEvent

AutomationElementIdentifiers.ToolTipOpenedEvent

WindowPatternIdentifiers.WindowOpenedEvent
AutomationEventArgs
AutomationElement.AutomationFocusChangedEvent AutomationElementIdentifiers.AutomationFocusChangedEvent AutomationFocusChangedEventArgs
AutomationElement.AutomationPropertyChangedEvent AutomationElementIdentifiers.AutomationPropertyChangedEvent AutomationPropertyChangedEventArgs
AutomationElement.StructureChangedEvent AutomationElementIdentifiers.StructureChangedEvent StructureChangedEventArgs
WindowPattern.WindowClosedEvent WindowPatternIdentifiers.WindowClosedEvent WindowClosedEventArgs

UI 自動化事件參數

下列類別會封裝事件自變數。

班級 說明
AsyncContentLoadedEventArgs 包含異步載入內容的相關信息,包括已完成載入的百分比。
AutomationEventArgs 包含不需要額外數據之簡單事件的相關信息。
AutomationFocusChangedEventArgs 包含有關輸入焦點從某個元素變更到另一個元素的資訊。 此類型的事件是由UI自動化系統引發,而不是由提供者所引發。
AutomationPropertyChangedEventArgs 包含元素或控件模式屬性值變更的相關資訊。
StructureChangedEventArgs 包含有關UI自動化樹變更的資訊。
WindowClosedEventArgs 包含關閉視窗的相關資訊。

所有事件自變數類別都包含成員 EventId 。 這個標識碼會封裝在AutomationEvent中。

AutomationEvent用來識別事件的物件是由提供者從AutomationElementIdentifiers欄位中取得,並且控制樣式識別元類別,例如DockPatternIdentifiers。 用戶端應用程式會從 AutomationElement 中的欄位取得對等欄位,以及控制項模式類別,例如 DockPattern 等。

如需事件識別碼的清單,請參閱 用戶端的UI自動化事件

另請參閱