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

Примечание.

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

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

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

Правила и соглашения реализации

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

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

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

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

    • невозможно или нецелесообразно ожидать завершения действия;

    • действие требует взаимодействия с пользователем;

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

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

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

Примечание.

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

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

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

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

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

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

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

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

Исключения

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

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

См. также