События модели автоматизации пользовательского интерфейса для клиентов
Примечание.
Эта документация предназначена для разработчиков .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 | Отменяет регистрацию всех зарегистрированных обработчиков событий. |
Пример кода см. в разделе "Подписка на события модель автоматизации пользовательского интерфейса".