Обзор событий автоматизации пользовательского интерфейса

Примечание

Эта документация предназначена для разработчиков .NET Framework, желающих использовать управляемые классы Автоматизация пользовательского интерфейса , заданные в пространстве имен System.Windows.Automation . Последние сведения о Автоматизация пользовательского интерфейсасм. в разделе API автоматизации Windows. Автоматизация пользовательского интерфейса.

Уведомление о событииМодель автоматизации пользовательского интерфейса Майкрософт — это ключевая функция для вспомогательных технологий, таких как средства чтения с экрана и экранные лупы. Эти клиенты автоматизации пользовательского интерфейса отслеживают события, вызываемые поставщиками автоматизации пользовательского интерфейса, когда что-то происходит в ИП , и используют эти сведения, чтобы уведомить конечных пользователей.

Повысить эффективность можно, позволяя приложениям поставщика вызывать события выборочно в зависимости от того, было ли все клиенты подписаны на эти события или прослушивают ли клиенты события.

Типы событий

СобытияАвтоматизация пользовательского интерфейса делятся на следующие категории.

Событие Описание
Изменение свойства Возникает, когда свойство элемента Автоматизация пользовательского интерфейса или шаблона элемента управления изменяется. Например, если клиент должен отслеживать элемент управления "Флажок" приложения, он может зарегистрироваться для прослушивания события изменения свойства ToggleState . Когда флажок устанавливается или снимается, поставщик вызывает событие и клиент может выполнить необходимые действия.
Действие элемента Возникает при изменении результатов ИП конечным пользователем или программой, например при нажатии кнопки или ее вызове с помощью InvokePattern.
Изменение структуры Вызывается, если структура дерева Автоматизация пользовательского интерфейса изменяется. Структура изменяется, когда новые элементы ИП становятся видимыми, скрытыми или удаляются с рабочего стола.
Глобальное изменение рабочего стола Вызывается, когда выполняются глобальные действия для клиента, например когда фокус переходит от одного элемента к другому или при закрытии окна.

Некоторые события необязательно означают, что состояние пользовательского интерфейса изменилось. Например, если пользователь переходит к полю ввода текста и затем нажимает кнопку для обновления поля, возникает событие TextChangedEvent , даже если пользователь фактически не изменил текст. При обработке события клиентскому приложению может потребоваться проверить, действительно ли что-либо изменилось, перед выполнением действия.

Следующие события могут возникать, даже если состояние пользовательского интерфейса не изменилось.

  • AutomationPropertyChangedEvent (в зависимости от измененного свойства)

  • ElementSelectedEvent

  • InvalidatedEvent

  • TextChangedEvent

Идентификаторы событий автоматизации пользовательского интерфейса

СобытияМодель автоматизации пользовательского интерфейса Майкрософт идентифицируются объектами 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

Аргументы событий автоматизации пользовательского интерфейса

Следующие классы инкапсулируют аргументы событий.

Класс Описание
AsyncContentLoadedEventArgs Содержит сведения об асинхронной загрузке содержимого, включая процент завершения загрузки.
AutomationEventArgs Содержит сведения о простом событии, не требующем дополнительных данных.
AutomationFocusChangedEventArgs Содержит сведения об изменении фокуса ввода с одного элемента на другой. События этого типа вызываются системой Автоматизация пользовательского интерфейса , а не поставщиками.
AutomationPropertyChangedEventArgs Содержит сведения об изменении значения свойства элемента или шаблона элемента управления.
StructureChangedEventArgs Содержит сведения об изменении дерева Автоматизация пользовательского интерфейса .
WindowClosedEventArgs Содержит сведения о закрытии окна.

Все классы аргументов событий содержат элемент EventId . Этот идентификатор инкапсулируется в AutomationEvent.

Объекты AutomationEvent , используемые для идентификации событий, извлекаются поставщиками из полей в AutomationElementIdentifiers и классов идентификатора шаблона элементов управления, таких как DockPatternIdentifiers. Эквивалентные поля извлекаются клиентскими приложениями из полей в AutomationElement и классов шаблонов элементов управления, таких как DockPattern.

Список идентификаторов событий см. в разделе UI Automation Events for Clients.

См. также