Вызов шаблона элемента управления

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

Элементы управления, поддерживающие состояние, такие как проверка поля и переключатели, должны реализовывать IToggleProvider и ISelectionProvider соответственно. Примеры элементов управления, реализующих этот шаблон, см. в разделах Типы элементов управления и поддерживаемые ими шаблоны элементов управления.

В этом разделе содержатся следующие подразделы.

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

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

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

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

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

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

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

    Примечание

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

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

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

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

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

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

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

Этот шаблон элемента управления не имеет связанных свойств или событий.

Типы элементов управления и поддерживаемые ими шаблоны элементов управления

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

Общие сведения о дереве модели автоматизации пользовательского интерфейса

UIA_Invoke_InvokedEventId