Compartilhar via


Tipos de coluna no controle DataGridView do 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ê associa um DataGridView componente e define a AutoGenerateColumns propriedade para true, as colunas são geradas automaticamente usando tipos de colunas 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 por conta própria e adicioná-las à coleção retornada pela propriedade Columns. Você pode criar essas instâncias para uso como colunas não associadas ou associá-las manualmente. As colunas associadas manualmente são úteis, por exemplo, quando você deseja substituir uma coluna gerada automaticamente de um tipo por 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 Utilizado para valores que são baseados em texto. Gerado automaticamente ao associar a números e cadeias de caracteres.
DataGridViewCheckBoxColumn Usado com os valores Boolean e CheckState. Gerado de forma automática ao vincular-se a valores desses tipos.
DataGridViewImageColumn Usado para exibir imagens. Gerado automaticamente ao fazer a associação com matrizes de bytes, objetos Image ou objetos Icon.
DataGridViewButtonColumn Usado para exibir botões nas células. Não gerado automaticamente ao vincular. Normalmente usadas como colunas não vinculadas.
DataGridViewComboBoxColumn Usado para exibir listas suspensas em células. Não gerado automaticamente ao vincular. Normalmente, os dados são associados manualmente.
DataGridViewLinkColumn Usado para exibir links em células. Não gerado automaticamente ao vincular. Normalmente, os dados são associados manualmente.
Seu tipo de coluna personalizado Você pode criar sua própria classe de coluna herdando a DataGridViewColumn classe ou qualquer uma de suas classes derivadas para fornecer aparência personalizada, comportamento ou controles hospedados. Para obter mais informações, consulte Como personalizar células e colunas no controle DataGridView dos Windows Forms estendendo seu comportamento e aparência

Esses tipos de coluna são descritos com mais detalhes nas seções a seguir.

DataGridViewTextBoxColumn (coluna de caixa de texto do DataGridView)

É DataGridViewTextBoxColumn um tipo de coluna de uso geral 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 de célula são convertidos automaticamente em cadeias de caracteres para exibição. Os valores inseridos ou modificados pelo usuário são analisados automaticamente para criar um valor de célula do tipo de dados apropriado. Você pode personalizar essas conversões manipulando os eventos de CellFormatting e CellParsing do controle DataGridView.

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

ColunaCaixaDeSeleçãoDoDataGridView

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

Normalmente, os valores de célula de caixa de seleção são usados para serem armazenados, 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, você pode manipular o evento CellClick, mas esse evento ocorrerá antes que o valor da célula seja atualizado. Se você precisar do novo valor no momento do clique, uma opção é calcular qual será o valor esperado com base no valor atual. Outra abordagem é confirmar a alteração imediatamente e manipular o CellValueChanged evento para responder a ela. 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 CommitEdit e passe o valor Commit.

DataGridViewImageColumn

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

A população automática de uma coluna de imagem a partir de uma fonte de dados funciona com matrizes de bytes em uma variedade de formatos de imagem, incluindo todos os formatos suportados pela classe Image e o formato OLE Picture usado pelo Microsoft® Access e o 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 são 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 "Image" que contém os locais das imagens que devem ser carregadas 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 executarem 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 associar dados a um DataGridView controle. Para usar colunas de botão, você deve criá-las manualmente e adicioná-las à coleção retornada pela propriedade DataGridView.Columns.

Você pode responder aos cliques do usuário em células de 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 a entrada de dados em campos que só podem conter 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 ComboBox, seja manualmente por meio da coleção retornada pela propriedade Items, ou vinculando-a a uma fonte de dados por meio das propriedades DataSource, DisplayMember e ValueMember. Para obter mais informações, consulte ComboBox Control.

Você pode associar os valores reais da célula à fonte de dados usada pelo DataGridView controle definindo a DataPropertyName propriedade do System.Windows.Forms.DataGridViewComboBoxColumn.

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

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 à coluna de botões para comportamentos especiais, como abrir uma janela com sub-registros.

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

Você pode responder aos cliques do usuário em links manipulando o CellContentClick evento. Este evento é distinto dos eventos CellClick e CellMouseClick, que ocorrem quando o 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.

Consulte também