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

Примечание.

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

В этом разделе описывается, как события Microsoft модель автоматизации пользовательского интерфейса используются клиентами модель автоматизации пользовательского интерфейса.

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

Эффективность также повышается благодаря возможности прослушивания событий только в заданной области. Например, клиент может прослушивать события изменения фокуса на всех модель автоматизации пользовательского интерфейса элементах дерева или только на одном элементе и его потомках.

Примечание.

Не предполагайте, что все возможные события вызываются поставщиком microsoft модель автоматизации пользовательского интерфейса. Например, не все изменения свойств вызывают события, создаваемые стандартными поставщиками прокси-серверов для элементов управления Windows Forms и Win32.

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

Подписка на события

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

Способ Тип события Тип аргументов события Тип делегата
AddAutomationFocusChangedEventHandler Изменение фокуса AutomationFocusChangedEventArgs AutomationFocusChangedEventHandler
AddAutomationPropertyChangedEventHandler Изменение свойства AutomationPropertyChangedEventArgs AutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Изменение структуры StructureChangedEventArgs StructureChangedEventHandler
AddAutomationEventHandler Все прочие события, идентифицированные AutomationEvent AutomationEventArgs или WindowClosedEventArgs AutomationEventHandler

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

Примечание.

Чтобы обработать события закрытия окна, приведите тип аргумента, передаваемого в обработчик событий, к типу WindowClosedEventArgs. Так как элемент Microsoft модель автоматизации пользовательского интерфейса для окна больше не действителен, параметр нельзя использовать sender для получения сведений; используйте GetRuntimeId вместо этого.

Внимание

Если приложение может получать события из собственного пользовательского интерфейса, не используйте поток пользовательского интерфейса приложения для подписки на события или отмену подписки. Это может привести к непредсказуемому поведению. Для получения дополнительной информации см. UI Automation Threading Issues.

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

Метод Description
RemoveAutomationEventHandler Отменяет регистрацию обработчика событий, который был зарегистрирован с помощью AddAutomationEventHandler.
RemoveAutomationFocusChangedEventHandler Отменяет регистрацию обработчика событий, который был зарегистрирован с помощью AddAutomationFocusChangedEventHandler.
RemoveAutomationPropertyChangedEventHandler Отменяет регистрацию обработчика событий, который был зарегистрирован с помощью AddAutomationPropertyChangedEventHandler.
RemoveAllEventHandlers Отменяет регистрацию всех зарегистрированных обработчиков событий.

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

См. также