UI 自动化事件概述

注释

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

Microsoft UI 自动化事件通知是辅助技术(如屏幕阅读器和屏幕放大镜)的关键功能。 这些 UI 自动化客户端跟踪 UI 自动化提供程序在 UI 中发生情况时引发的事件,并使用信息通知最终用户。

通过允许提供程序应用有选择地引发事件来提高效率,这取决于是否有客户端订阅这些事件;如果没有任何客户端在监听事件,则可以完全不引发任何事件。

事件类型

UI 自动化事件分为以下类别。

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

某些事件不一定意味着 UI 的状态已更改。 例如,如果用户切换到文本输入字段,并且单击一个按钮来更新字段,即使用户实际上没有更改文本,仍会触发 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 自动化事件参数

以下类封装事件参数。

班级 DESCRIPTION
AsyncContentLoadedEventArgs 包含有关内容的异步加载的信息,包括已完成加载的百分比。
AutomationEventArgs 包含有关不需要额外数据的简单事件的信息。
AutomationFocusChangedEventArgs 包含有关输入焦点从一个元素更改为另一个元素的信息。 此类型的事件由 UI 自动化系统而不是提供程序引发。
AutomationPropertyChangedEventArgs 包含有关元素或控件模式属性值更改的信息。
StructureChangedEventArgs 包含有关 UI 自动化树的更改的信息。
WindowClosedEventArgs 包含有关窗口关闭的信息。

所有事件参数类都包含一个 EventId 成员。 此标识符封装在AutomationEvent中。

AutomationEvent用于标识事件的对象由提供程序从控件模式标识符类(例如AutomationElementIdentifiers)中的DockPatternIdentifiers字段获取。 等效字段由客户端应用程序从 AutomationElement 中的字段与控制模式类(例如 DockPattern)获取。

有关事件标识符的列表,请参阅 客户端的 UI 自动化事件

另请参阅