实现 UI 自动化 Grid 控件模式
备注
本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化。
本主题介绍实现 IGridProvider的准则和约定,包括有关属性、方法和事件的信息。 本概述的结尾列出了指向其他参考资料的链接。
GridPattern 控件模式用于支持作为子元素集合的容器的控件。 此元素的子元素必须实现 IGridItemProvider ,并且在可以按行和列进行遍历的二维逻辑坐标系统中进行组织。 有关实现此控件模式的控件示例,请参阅 Control Pattern Mapping for UI Automation Clients。
实现准则和约定
在实现 Grid 控件模式时,请注意以下准则和约定:
网格坐标从零开始,左上角单元格(或右上角单元格,具体取决于区域设置)的坐标为 (0, 0)。
如果某个单元格为空,必须仍返回 UI 自动化元素以便支持该单元格的 ContainingGrid 属性。 当网格中的子元素的布局类似于未对齐的数组时,这是可能的(请参阅下面的示例)。
坐标为空的 Grid 控件的示例
只有一项的网格仍需要实现 IGridProvider (如果它逻辑上被视为网格)。 网格中的子项数并不重要。
隐藏的行和列(具体取决于提供程序实现)可能会在 UI 自动化树中加载,因此将会反映在 RowCount 和 ColumnCount 属性中。 如果尚未加载隐藏的行和列,则不应对它们进行计数。
IGridProvider 不会启用网格的主动操作;必须实现 ITransformProvider 以启用此功能。
使用 StructureChangedEventHandler 来侦听对网格的结构和布局更改(如已添加、删除或合并的单元格)。
使用 AutomationFocusChangedEventHandler 来跟踪遍历的网格的项或单元格。
IGridProvider 必需的成员
实现 IGridProvider 接口需要以下属性和方法。
必需的成员 | 类型 | 说明 |
---|---|---|
RowCount | 属性 | 无 |
ColumnCount | 属性 | 无 |
GetItem | 方法 | 无 |
没有与此控件模式关联的事件。
例外
提供程序必须引发以下异常。
例外类型 | 条件 |
---|---|
ArgumentOutOfRangeException | GetItem - 如果请求的行坐标大于 RowCount 或列坐标大于 ColumnCount。 |
ArgumentOutOfRangeException | GetItem - 如果请求的行或列坐标任一个小于零。 |