调用控件模式

介绍实现 IInvokeProvider 的准则和约定,包括有关方法的信息。 Invoke 控件模式用于支持在激活时不保持状态,而是启动或执行单个明确操作的控件。

维护状态的控件(例如检查框和单选按钮)必须分别实现 IToggleProviderISelectionProvider。 有关实现此控件模式的控件示例,请参阅 控件类型及其支持的控件模式

本主题包含以下各节:

实现准则和约定

实现 Invoke 控件模式时,请注意以下准则和约定:

  • 如果未通过其他控件模式提供程序公开相同的行为,控件将实现 IInvokeProvider 。 例如,如果控件上的 IUIAutomationInvokePattern::Invoke 方法执行与 IUIAutomationExpandCollapsePattern::ExpandCollapse 方法相同的操作,则控件不应实现 IInvokeProvider

  • 通常通过单击或双击或按 ENTER、预定义的键盘快捷键或某种备用的击键组合来调用控件。

  • Invoked 事件 (UIA_Invoke_InvokedEventId) 事件在已激活 (控件上引发,作为对执行其关联操作的控件) 的响应。 如果可能,应在控件完成操作后引发事件且在不阻止的情况下返回事件。 在以下情况下,应在为 Invoke 请求提供服务之前引发 Invoked 事件 (UIA_Invoke_InvokedEventId) :

    • 不可能等至操作完成,或这一做法不实际。
    • 该操作需要用户交互。
    • 该操作很耗时并且会导致调用的客户端花费大量的时间进行阻止。
  • 如果调用控件具有明显的副作用,则应通过 HelpText 属性公开这些副作用。 例如,即使 IUIAutomationInvokePattern::Invoke 不与选择相关联, Invoke 也可能导致另一个控件处于选中状态。

  • 悬停 (或鼠标悬停) 效果通常不构成 Invoked 事件。 但是,执行操作的控件 (而不是根据悬停状态导致视觉效果) 应支持 Invoke 控件模式。

    备注

    如果该控件仅可作为与鼠标相关的副作用的结果被调用,则此实现被视为可访问性问题。

  • 调用一个控件不同于选择一个项。 但是,具体取决于控件,调用控件可能导致项被选为副作用。 例如,调用 My Documents 文件夹中的 Microsoft Word 文档列表项将会同时选择该项和打开该文档。

  • 调用时,元素可能会立即从 Microsoft UI 自动化树中消失。 从由事件回调提供的元素请求信息可能失败。 建议的解决方法是预取缓存的信息。

  • 控件可实现多个控件模式。 例如,Microsoft Excel 工具栏上的 “填充颜色” 控件实现 Invoke 和 ExpandCollapse 控件模式。 ExpandCollapse 控件模式公开菜单, Invoke 控件模式使用所选颜色填充活动选定内容。

IInvokeProvider 的必需成员

实现 IInvokeProvider 接口需要以下方法。

必需的成员 成员类型 说明
Invoke 方法 调用 是一种异步调用,必须立即返回,而不会阻止。
此行为对于被调用时直接或间接启动模式对话框的控件而言尤其重要。 引发该事件的任何 UI 自动化客户端将保持被阻止的状态,直到模式对话框关闭为止。

没有与此控件模式关联的属性或事件。

控件类型及其支持的控件模式

UI 自动化控件模式概述

UI 自动化树概述

UIA_Invoke_InvokedEventId