Поделиться через


Реализация элемента управления Invoke Control Pattern в автоматизации пользовательского интерфейса

Замечание

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

В этом разделе приводятся рекомендации и соглашения о реализации IInvokeProvider, включая сведения о событиях и свойствах. Ссылки на дополнительные материалы перечислены в конце раздела.

Шаблон InvokePattern элемента управления используется для поддержки элементов управления, которые не сохраняют состояние при активации, а инициируют или выполняют одно однозначное действие. Элементы управления, поддерживающие состояние, такие как флажки и переключатели, должны вместо этого реализовать IToggleProvider и ISelectionItemProvider соответственно. Примеры элементов управления, реализующих шаблон элемента управления Invoke, см. в разделе "Сопоставление шаблонов элементов управления" для клиентов автоматизации пользовательского интерфейса.

Рекомендации по реализации и соглашения

При реализации шаблона элемента управления Invoke обратите внимание на следующие рекомендации и соглашения:

  • Элементы управления реализуют IInvokeProvider, если такое же поведение не предоставляется через другого поставщика шаблона элемента управления. Например, если метод Invoke элемента управления выполняет то же действие, что и метод Expand или Collapse, элемент управления не должен реализовывать IInvokeProvider.

  • Вызов элемента управления обычно выполняется путем щелчка или двойного щелчка или нажатия клавиш ВВОД, предопределенного сочетания клавиш или альтернативного сочетания нажатий клавиш.

  • InvokedEvent вызывается на элементе управления, который был активирован (как ответ на элемент управления, выполняющий связанное действие). Если это возможно, событие должно вызываться после завершения действия элемента управления и возврата без блокировки. Вызываемое событие следует вызвать перед обслуживанием запроса Invoke в следующих сценариях:

    • Невозможно или практически ждать, пока действие не будет завершено.

    • Для этого действия требуется взаимодействие с пользователем.

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

  • Если вызов элемента управления имеет значительные побочные эффекты, эти побочные эффекты должны быть раскрыты через свойство HelpText. Например, даже если Invoke не связан с выделением, Invoke может привести к выбору другого элемента управления.

  • Эффекты наведения указателя мыши обычно не представляют собой вызываемое событие. Однако элементы управления, выполняющие действие (а не вызывающие визуальный эффект), которые основываются на состоянии наведения, должны поддерживать InvokePattern шаблон элемента управления.

Замечание

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

  • Вызов элемента управления отличается от выбора элемента. Однако в зависимости от элемента управления вызов может привести к тому, что элемент будет выбран в качестве побочных эффектов. Например, вызов элемента списка документов Microsoft Word в папке "Мои документы" выбирает элемент и открывает документ.

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

  • Элементы управления могут реализовывать несколько шаблонов элементов управления. Например, элемент управления "Цвет заливки" на панели инструментов Microsoft Excel реализует шаблоны управления InvokePattern и ExpandCollapsePattern. ExpandCollapsePattern предоставляет меню и InvokePattern заполняет активный выбор выбранным цветом.

Обязательные члены для IInvokeProvider

Для реализации IInvokeProviderнеобходимы следующие свойства и методы.

Обязательные участники Тип участника Примечания.
Invoke метод Invoke является асинхронным вызовом и должен немедленно возвращаться без блокировки.

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

Исключения

Поставщики должны генерировать следующие исключения.

Тип исключения Состояние
ElementNotEnabledException Если элемент управления не включен.

См. также