实现 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 属性。 当网格中的子元素的布局类似于未对齐的数组时,这是可能的(请参阅下面的示例)。

Windows Explorer view showing ragged layout. 坐标为空的 Grid 控件的示例

  • 只有一项的网格仍需要实现 IGridProvider (如果它逻辑上被视为网格)。 网格中的子项数并不重要。

  • 隐藏的行和列(具体取决于提供程序实现)可能会在 UI 自动化树中加载,因此将会反映在 RowCountColumnCount 属性中。 如果尚未加载隐藏的行和列,则不应对它们进行计数。

  • IGridProvider 不会启用网格的主动操作;必须实现 ITransformProvider 以启用此功能。

  • 使用 StructureChangedEventHandler 来侦听对网格的结构和布局更改(如已添加、删除或合并的单元格)。

  • 使用 AutomationFocusChangedEventHandler 来跟踪遍历的网格的项或单元格。

IGridProvider 必需的成员

实现 IGridProvider 接口需要以下属性和方法。

必需的成员 类型 说明
RowCount 属性
ColumnCount 属性
GetItem 方法

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

例外

提供程序必须引发以下异常。

例外类型 条件
ArgumentOutOfRangeException GetItem

- 如果请求的行坐标大于 RowCount 或列坐标大于 ColumnCount
ArgumentOutOfRangeException GetItem

- 如果请求的行或列坐标任一个小于零。

请参阅