实现 UI 自动化 Selection 控件模式
备注
本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化。
本主题介绍了实现 ISelectionProvider的准则和约定,包括有关事件和属性的信息。 本主题的结尾列出了指向其他参考资料的链接。
SelectionPattern 控件模式用于支持作为可选子项集合的容器的控件。 此元素的子级必须实现 ISelectionItemProvider。 有关实现此控件模式的控件示例,请参阅 Control Pattern Mapping for UI Automation Clients。
实现准则和约定
在实现“选项”控件模式时,请注意以下准则和约定:
实现 ISelectionProvider 的控件允许选择单个或多个子项。 例如,列表框、列表视图和树视图支持多个选项,而组合框、滑块和单选按钮组则支持单个选项。
具有最小、最大和连续范围的控件(如“卷” IRangeValueProvider 滑块控件)应实现 而不是 ISelectionProvider。
管理实现 IRawElementProviderFragmentRoot 的子控件的单选控件(如“显示属性”对话框中的“屏幕分辨率”滑块,或 Microsoft Word 中的“颜色选取器”选项控件(如下所示))应实现 ISelectionProvider;其子级应实现 IRawElementProviderFragment 和 ISelectionItemProvider。
颜色样本字符串映射示例
- 菜单不支持 SelectionPattern。 如果你正在处理包含图形和文本的菜单项(例如,Microsoft Outlook 中的“视图”菜单中的“预览窗格”项)并需要传达状态,则应实现 IToggleProvider。
ISelectionProvider 必需的成员
以下属性、方法和事件都是 ISelectionProvider 接口所必需的。
必需的成员 | 类型 | 说明 |
---|---|---|
CanSelectMultiple | 属性 | 应支持使用 AddAutomationPropertyChangedEventHandler 和 RemoveAutomationPropertyChangedEventHandler的属性更改事件。 |
IsSelectionRequired | 属性 | 应支持使用 AddAutomationPropertyChangedEventHandler 和 RemoveAutomationPropertyChangedEventHandler的属性更改事件。 |
GetSelection | 方法 | 无 |
InvalidatedEvent | 事件 | 在容器中的选项发生重大更改并需要发送多于 InvalidateLimit 常量所允许的添加和移除事件时引发。 |
IsSelectionRequired 和 CanSelectMultiple 属性可以是动态的。 例如,控件的初始状态默认可能未选择任何项,指示 IsSelectionRequired 是 false
。 但是,选择某一项后,该控件必须始终具有至少一个选定的项。 同样,在极少数情况下,控件可能允许在初始状态下选择多个项,但随后仅允许选择一个选项。
例外
提供程序必须引发以下异常。
异常类型 | 条件 |
---|---|
ElementNotEnabledException | 如果未启用该控件。 |
InvalidOperationException | 如果该控件是隐藏的。 |