实现 UI 自动化 Grid 控件模式

注释

本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化

本主题介绍实现 IGridProvider的准则和约定,包括有关属性、方法和事件的信息。 概述末尾列出了指向其他引用的链接。

控件 GridPattern 模式用于支持充当子元素集合容器的控件。 此元素的子级必须实现 IGridItemProvider 并组织在二维逻辑坐标系中,该系统可以通过行和列遍历。 有关实现此控件模式的控件示例,请参阅 UI 自动化客户端的控件模式映射。

实施准则和约定

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

  • 网格坐标从零开始,左上角单元格(或右上角单元格,具体取决于区域设置)的坐标为 (0, 0)。

  • 如果单元格为空,则仍必须返回 UI 自动化元素以支持 ContainingGrid 该单元格的属性。 当网格中的子元素布局类似于不规则数组时,可能会发生这种情况(请参阅下面的示例)。

显示未对齐布局的 Windows 资源管理器视图。 坐标为空的 Grid 控件的示例

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

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

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

  • 使用StructureChangedEventHandler侦听网格的结构或布局的变化,例如单元格的添加、删除或合并。

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

IGridProvider 的必需成员

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

必需成员 类型 注释
RowCount 资产 没有
ColumnCount 资产 没有
GetItem 方法 没有

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

例外

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

异常类型 条件
ArgumentOutOfRangeException GetItem

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

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

另请参阅