Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Эта документация предназначена для разработчиков .NET Framework, которые хотят использовать управляемые классы автоматизации пользовательского интерфейса, определенные в пространстве имен System.Windows.Automation. Последние сведения об автоматизации пользовательского интерфейса см. в разделе API автоматизации Windows: автоматизация пользовательского интерфейса.
В этом разделе описывается, как события автоматизации пользовательского интерфейса Майкрософт используются клиентами автоматизации пользовательского интерфейса.
Автоматизация пользовательского интерфейса позволяет клиентам подписываться на интересующие события. Эта возможность повышает производительность, устраняя необходимость постоянно опрашивать все элементы пользовательского интерфейса в системе, чтобы узнать, изменилась ли какая-либо информация, структура или состояние.
Эффективность также улучшается благодаря возможности прослушивания событий только в определенной области. Например, клиент может прослушивать события изменения фокуса на всех элементах автоматизации пользовательского интерфейса в дереве или только на одном элементе и его потомках.
Замечание
Не предполагайте, что все возможные события создаются поставщиком службы автоматизации пользовательского интерфейса Майкрософт. Например, не все изменения свойств вызывают события, создаваемые стандартными поставщиками прокси-серверов для элементов управления Windows Forms и Win32.
Более широкое представление событий автоматизации пользовательского интерфейса см. в обзоре событий автоматизации пользовательского интерфейса.
Подписка на события
Клиентские приложения подписываются на события определенного типа, регистрируя обработчик событий, используя один из следующих методов.
Метод | Тип события | Тип аргументов событий | Тип делегата |
---|---|---|---|
AddAutomationFocusChangedEventHandler | Изменение фокуса | AutomationFocusChangedEventArgs | AutomationFocusChangedEventHandler |
AddAutomationPropertyChangedEventHandler | Изменение свойства | AutomationPropertyChangedEventArgs | AutomationPropertyChangedEventHandler |
AddStructureChangedEventHandler | Изменение структуры | StructureChangedEventArgs | StructureChangedEventHandler |
AddAutomationEventHandler | Все остальные события, определяемые по объекту AutomationEvent | AutomationEventArgs или WindowClosedEventArgs | AutomationEventHandler |
Перед вызовом метода необходимо создать метод делегата для обработки события. Если вы предпочитаете, можно обрабатывать различные виды событий в одном методе и передавать этот метод в нескольких вызовах одному из методов в таблице. Например, один AutomationEventHandler можно настроить для обработки различных событий по-разному в соответствии с параметром EventId.
Замечание
Чтобы обработать события с закрытым окном, приведите тип аргумента, передаваемый обработчику событий как WindowClosedEventArgs. Так как элемент автоматизации пользовательского интерфейса Майкрософт для окна больше не действителен, параметр нельзя использовать sender
для получения сведений; используйте GetRuntimeId вместо этого.
Осторожность
Если приложение может получать события из собственного пользовательского интерфейса, не используйте поток пользовательского интерфейса приложения для подписки на события или отмену подписки. Это может привести к непредсказуемому поведению. Дополнительные сведения см. в разделе «Проблемы многопоточности автоматизации пользовательского интерфейса».
При завершении работы приложения или когда события автоматизации пользовательского интерфейса больше не должны отслеживаться приложением, клиенты автоматизации должны вызывать один из следующих методов.
Метод | Описание |
---|---|
RemoveAutomationEventHandler | Отменяет регистрацию обработчика событий, зарегистрированного с помощью AddAutomationEventHandler. |
RemoveAutomationFocusChangedEventHandler | Отменяет регистрацию обработчика событий, зарегистрированного с помощью AddAutomationFocusChangedEventHandler. |
RemoveAutomationPropertyChangedEventHandler | Отменяет регистрацию обработчика событий, зарегистрированного с помощью AddAutomationPropertyChangedEventHandler. |
RemoveAllEventHandlers | Отменяет регистрацию всех зарегистрированных обработчиков событий. |
Пример кода см. в разделе "Подписка на события автоматизации пользовательского интерфейса".
См. также
- Подписка на события автоматизации пользовательского интерфейса
- Обзор событий автоматизации пользовательского интерфейса
- Обзор свойств автоматизации пользовательского интерфейса
- Пример TrackFocus