Реализация шаблона элемента управления модели автоматизации пользовательского интерфейса 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 method Invoke является асинхронным вызовом и должен возвращаться немедленно без блокировки.

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

Исключения

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

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

См. также