UI 自动化事件概述

备注

本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化

Microsoft UI 自动化事件通知是屏幕读取器和屏幕放大器等辅助技术的一项重要功能。 这些 UI 自动化客户端跟踪由 UI 自动化提供程序引发的事件(当 UI 中发生一些事情时),并使用这些信息通知最终用户。

通过允许提供程序应用程序有选择地引发事件来提高效率,这具体取决于是否有客户端订阅了这些事件,或者如果没有客户端在侦听任意事件,则不会引发任何事件。

事件类型

UI 自动化事件属于以下类别。

事件 说明
属性更改 当 UI 自动化元素上的某个属性或控件模式更改时引发。 例如,如果客户端需要监视应用程序的复选框控件,它可以注册来侦听 ToggleState 属性上的属性更改事件。 选中或取消选中该复选框控件时,提供程序会引发事件且客户端会采取必要的操作。
元素操作 当来自最终用户或编程活动的 UI 结果出现更改时引发;例如,单击或通过 InvokePattern 调用一个按钮。
结构更改 在 UI 自动化树的结构更改时引发。 当桌面上有新 UI 项变得可见、隐藏或删除时,结果便发生更改。
全局桌面更改 当与客户端相关的的全局操作发生时引发,例如当焦点从一个元素转换到另一个元素、或窗口关闭时。

一些事件不一定意味着 UI 状态已更改。 例如,当用户通过 tab 键移动到文本输入字段,然后单击一个按钮更新该字段时,如果用户实际上并未更改文本,则会引发 TextChangedEvent 。 处理事件时,客户端应用程序在执行操作之前可能有必要检查是否实际发生了任何更改。

即使 UI 的状态未更改,也可能会引发以下事件。

  • AutomationPropertyChangedEvent (取决于已更改的属性)

  • ElementSelectedEvent

  • InvalidatedEvent

  • TextChangedEvent

UI 自动化事件标识符

Microsoft UI 自动化事件由 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 Automation Events for Clients

请参阅