Implementando o Padrão de Controle Grid de Automação de Interface de Usuário

Observação

Esta documentação destina-se a desenvolvedores de .NET Framework que querem usar as classes da Automação da Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre a Automação da Interface do Usuário, confira API de Automação do Windows: Automação da Interface do Usuário.

Este tópico apresenta as diretrizes e as convenções para implementar IGridProvider, incluindo informações sobre propriedades, métodos e eventos. Os links para referências adicionais estão listados no final da visão geral.

O padrão de controle GridPattern é usado para dar suporte a controles que atuam como contêineres para uma coleção de elementos filho. Os filhos desse elemento devem implementar IGridItemProvider e ser organizados em um sistema de coordenadas lógico bidimensional que pode ser percorrido por linha e coluna. Para ver exemplos de controles que implementam esse padrão de controle, confira Mapeamento de padrões de controle para clientes da Automação da Interface do Usuário.

Diretrizes e convenções de implementação

Ao implementar o padrão de controle Grid, observe as seguintes diretrizes e convenções:

  • As coordenadas de grade são baseadas em zero com a célula superior esquerda (ou superior direita, dependendo da localidade) tendo as coordenadas (0, 0).

  • Se uma célula estiver vazia, um elemento da Automação da Interface do Usuário ainda precisará ser retornado para dar suporte à propriedade ContainingGrid dessa célula. Isso é possível quando o layout dos elementos filho na grade é semelhante a uma matriz irregular (veja o exemplo abaixo).

Windows Explorer view showing ragged layout. Exemplo de um controle de grade com coordenadas vazias

  • Uma grade com um só item ainda precisará implementar IGridProvider se for logicamente considerada uma grade. O número de itens filho na grade é irrelevante.

  • Linhas e colunas ocultas, dependendo da implementação do provedor, podem ser carregadas na árvore de Automação da Interface do Usuário e, portanto, serão refletidas nas propriedades RowCount e ColumnCount. Se as linhas e colunas ocultas ainda não tiverem sido carregadas, elas não deverão ser contadas.

  • IGridProvider não habilita a manipulação ativa de uma grade; ITransformProvider deve ser implementado para habilitar essa funcionalidade.

  • Use um StructureChangedEventHandler para escutar alterações estruturais ou de layout na grade, como células que foram adicionadas, removidas ou mescladas.

  • Use um AutomationFocusChangedEventHandler para acompanhar a passagem pelos itens ou células de uma grade.

Membros necessários para IGridProvider

As propriedades e os métodos a seguir são necessários para implementar a interface IGridProvider.

Membros necessários Type Observações
RowCount Propriedade Nenhum
ColumnCount Propriedade Nenhum
GetItem Método Nenhum

Esse padrão de controle não tem eventos associados.

Exceções

Os provedores devem gerar as exceções a seguir.

Tipo de exceção Condição
ArgumentOutOfRangeException GetItem

– Se a coordenada da linha solicitada é maior do que o RowCount ou a coordenada da coluna é maior do que o ColumnCount.
ArgumentOutOfRangeException GetItem

– Se a coordenada de linha ou coluna solicitada é menor que zero.

Confira também