Tipos de coluna no controle DataGridView dos Windows Forms

O DataGridView controle usa vários tipos de coluna para exibir suas informações e permitir que os usuários modifiquem ou adicionem informações.

Quando você vincula um DataGridView controle e define a AutoGenerateColumns propriedade como true, as colunas são geradas automaticamente usando tipos de coluna padrão apropriados para os tipos de dados contidos na fonte de dados associada.

Você também pode criar instâncias de qualquer uma das classes de coluna e adicioná-las à coleção retornada pela Columns propriedade. Você pode criar essas instâncias para uso como colunas não associadas ou você pode associá-las manualmente. As colunas associadas manualmente são úteis, por exemplo, quando você quiser substituir uma coluna gerada automaticamente de um tipo com uma coluna de outro tipo.

A tabela a seguir descreve as várias classes de coluna disponíveis para uso no DataGridView controle.

Classe Descrição
DataGridViewTextBoxColumn Usado com valores baseados em texto. Gerado automaticamente ao associar a números e cadeias de caracteres.
DataGridViewCheckBoxColumn Usado com Boolean e CheckState valores. Gerado automaticamente ao associar a valores desses tipos.
DataGridViewImageColumn Usado para exibir imagens. Gerado automaticamente ao vincular a matrizes de bytes, Image objetos ou Icon objetos.
DataGridViewButtonColumn Usado para exibir os botões nas células. Não gerado automaticamente durante a associação. Normalmente usado como colunas não associadas.
DataGridViewComboBoxColumn Usado para exibir listas suspensas nas células. Não gerado automaticamente durante a associação. Normalmente, associação manual de dados.
DataGridViewLinkColumn Usado para exibir links nas células. Não gerado automaticamente durante a associação. Normalmente, associação manual de dados.
Seu tipo de coluna personalizada Você pode criar sua própria classe de coluna herdando a DataGridViewColumn classe ou qualquer uma de suas classes derivadas para fornecer aparência, comportamento ou controles hospedados personalizados. Para mais informações, consulte Como personalizar células e colunas no controle DataGridView dos Windows Forms estendendo o comportamento e a aparência

Esses tipos de colunas são descritos mais detalhadamente nas seções a seguir.

DataGridViewTextBoxColumn

O DataGridViewTextBoxColumn é um tipo de coluna de uso geral para uso com valores baseados em texto, como números e cadeias de caracteres. No modo de edição, um TextBox controle é exibido na célula ativa, permitindo que os usuários modifiquem o valor da célula.

Os valores da célula são convertidos automaticamente em cadeiras de caracteres para exibição. Os valores inseridos ou modificados pelo usuário são automaticamente analisados para criar um valor de célula do tipo de dados apropriado. Você pode personalizar essas conversões manipulando os CellFormatting eventos e CellParsing do DataGridView controle.

O tipo de dados do valor da célula de uma coluna é especificado na ValueType propriedade da coluna.

DataGridViewCheckBoxColumn

O DataGridViewCheckBoxColumn é usado com Boolean e CheckState valores. Boolean Os valores são exibidos como caixas de seleção de dois ou três estados, dependendo do valor da ThreeState propriedade. Quando a coluna está vinculada a CheckState valores, o valor da ThreeState propriedade é true por padrão.

Normalmente, os valores de célula da caixa de seleção destinam-se para armazenamento, como qualquer outro dado ou para executar operações em massa. Se você quiser responder imediatamente quando os usuários clicarem em uma célula de caixa de seleção, poderá manipular o evento, mas esse evento ocorrerá antes que o CellClick valor da célula seja atualizado. Se você precisar do novo valor no momento do clique, uma opção será calcular qual será o valor esperado com base no valor atual. Outra abordagem é confirmar a alteração imediatamente e manipular o CellValueChanged evento para respondê-la. Para confirmar a alteração quando a célula é clicada, você deve manipular o CurrentCellDirtyStateChanged evento. No manipulador, se a célula atual for uma célula de caixa de seleção, chame o método e passe o CommitEditCommit valor.

DataGridViewImageColumn

O DataGridViewImageColumn é usado para exibir imagens. As colunas de imagem podem ser preenchidas automaticamente a partir de uma fonte de dados, preenchidas manualmente para colunas não acopladas ou preenchidas dinamicamente em um manipulador para o CellFormatting evento.

A população automática de uma coluna de imagem de uma fonte de dados funciona com matrizes de bytes em uma variedade de formatos de imagem, incluindo todos os formatos suportados pela Image classe e o formato de imagem OLE usado pelo Microsoft® Access e pelo banco de dados de exemplo Northwind.

Preencher uma coluna de imagem manualmente é útil quando você deseja fornecer a funcionalidade de um DataGridViewButtonColumn, mas com uma aparência personalizada. Você pode manipular o DataGridView.CellClick evento para responder a cliques em uma célula de imagem.

Preencher as células de uma coluna de imagem em um manipulador para o CellFormatting evento é útil quando você deseja fornecer imagens para valores calculados ou valores em formatos que não sejam de imagem. Por exemplo, você pode ter uma coluna “Risco” com valores de cadeia de caracteres como "high", "middle" e "low" que você deseja exibir como ícones. Como alternativa, você pode ter uma coluna "Imagem" que contém os locais de imagens que devem ser carregados em vez do conteúdo binário das imagens.

DataGridViewButtonColumn

Com o DataGridViewButtonColumn, você pode exibir uma coluna de células que contêm botões. Isso é útil quando você deseja fornecer uma maneira fácil para os usuários de executar ações em registros específicos, como fazer um pedido ou exibir registros filho em uma janela separada.

As colunas de botão não são geradas automaticamente ao vincular dados a um DataGridView controle. Para usar colunas de botão, você deve criá-las manualmente e adicioná-las à coleção retornada DataGridView.Columns pela propriedade.

Você pode responder aos cliques do usuário nas células do botão manipulando o DataGridView.CellClick evento.

DataGridViewComboBoxColumn

Com o DataGridViewComboBoxColumn, você pode exibir uma coluna de células que contém caixas de listagem suspensas. Isso é útil para entrada de dados em campos que podem conter apenas valores específicos, como a coluna Categoria da tabela Produtos no banco de dados de exemplo Northwind.

Você pode preencher a lista suspensa usada para todas as células da mesma maneira que preencheria uma lista suspensa, manualmente por meio da coleção retornada pela propriedade ou vinculando-a a uma ComboBox fonte de dados por meio das DataSourcepropriedades , DisplayMembere ValueMember .Items Para saber mais, consulte Controle ComboBox.

Você pode vincular os valores de célula reais à fonte de dados usada pelo DataGridView controle definindo a DataPropertyNameSystem.Windows.Forms.DataGridViewComboBoxColumnpropriedade do .

As colunas da caixa de combinação não são geradas automaticamente ao vincular dados a um DataGridView controle. Para usar colunas de caixa de combinação, você deve criá-las manualmente e adicioná-las à coleção retornada Columns pela propriedade.

DataGridViewLinkColumn

Com o DataGridViewLinkColumn, você pode exibir uma coluna de células que contêm hiperlinks. Isso é útil para valores de URL na fonte de dados ou como uma alternativa para a coluna de botão para comportamentos especiais, como abrir uma janela com registros filho.

As colunas de link não são geradas automaticamente ao vincular dados a um DataGridView controle. Para usar colunas de link, você deve criá-las manualmente e adicioná-las à coleção retornada Columns pela propriedade.

Você pode responder aos cliques do usuário em links manipulando o CellContentClick evento. Esse evento é diferente dos CellClick eventos e CellMouseClick , que ocorrem quando um usuário clica em qualquer lugar em uma célula.

A DataGridViewLinkColumn classe fornece várias propriedades para modificar a aparência dos links antes, durante e depois que eles são clicados.

Confira também