Partilhar via


Arquitetura de controle DataGridView (Windows Forms)

O controle DataGridView e suas classes relacionadas são projetados para ser um sistema flexível e extensível para exibir e editar dados tabulares. Essas classes estão todas contidas no namespace System.Windows.Forms e todas são nomeadas com o prefixo "DataGridView".

Elementos de arquitetura

As classes primárias DataGridView companheiras derivam de DataGridViewElement. O modelo de objeto a seguir ilustra a hierarquia de herança DataGridViewElement.

Diagrama que mostra a hierarquia do Modelo de Objeto DataGridViewElement.

A classe DataGridViewElement fornece uma referência ao controle DataGridView pai e tem uma propriedade State, que contém um valor que representa uma combinação de valores da enumeração DataGridViewElementStates.

As seções a seguir descrevem as DataGridView classes complementares com mais detalhes.

DataGridViewElementStates

A enumeração DataGridViewElementStates contém os seguintes valores:

Os valores dessa enumeração podem ser combinados com os operadores lógicos bitwise, para que a propriedade State possa expressar mais de um estado ao mesmo tempo. Por exemplo, um DataGridViewElement pode ser simultaneamente Frozen, Selectede Visible.

Células e Bandas

O controle DataGridView compreende dois tipos fundamentais de objetos: células e bandas. Todas as células derivam da classe base DataGridViewCell. Os dois tipos de bandas, DataGridViewColumn e DataGridViewRow, derivam ambos da classe base DataGridViewBand.

O controle DataGridView interopera com várias classes, mas as mais comumente encontradas são DataGridViewCell, DataGridViewColumne DataGridViewRow.

DataGridViewCell

A célula é a unidade fundamental de interação para o DataGridView. A exibição é centralizada em células, e a entrada de dados geralmente é realizada através de células. Você pode acessar células usando a coleção Cells da classe DataGridViewRow e pode acessar as células selecionadas usando a coleção SelectedCells do controle DataGridView. O modelo de objeto a seguir ilustra esse uso e mostra a hierarquia de herança DataGridViewCell.

Diagrama que mostra a hierarquia DataGridViewCell Object Model.

O tipo DataGridViewCell é uma classe base abstrata, da qual derivam todos os tipos de células. DataGridViewCell e os seus tipos derivados não são controles do Windows Forms, mas hospedam alguns controles do Windows Forms. Qualquer funcionalidade de edição suportada por uma célula é normalmente manipulada por um controle hospedado.

DataGridViewCell objetos não controlam sua própria aparência e recursos de pintura da mesma forma que os controles do Windows Forms. Em vez disso, o DataGridView é responsável pela aparência dos seus DataGridViewCell objetos. Você pode afetar significativamente a aparência e o comportamento das células interagindo com as propriedades e eventos do controle DataGridView. Quando você tem requisitos especiais para personalizações que estão além dos recursos do controle DataGridView, você pode implementar sua própria classe que deriva de DataGridViewCell ou uma de suas classes filhas.

A lista a seguir mostra as classes derivadas de DataGridViewCell:

DataGridViewColumn

O esquema do armazenamento de dados anexado do controle DataGridView é expresso nas colunas do controle DataGridView. Você pode acessar as colunas do controle DataGridView usando a coleção Columns. Você pode acessar as colunas selecionadas usando a coleção SelectedColumns. O modelo de objeto a seguir ilustra esse uso e mostra a hierarquia de herança DataGridViewColumn.

Diagrama que mostra a hierarquia do Modelo de Objeto DataGridViewColumn.

Alguns dos tipos de células-chave têm tipos de coluna correspondentes. Estes são derivados da classe base DataGridViewColumn.

A lista a seguir mostra as classes derivadas de DataGridViewColumn:

Controles de edição DataGridView

As células que oferecem suporte à funcionalidade de edição avançada normalmente usam um controle hospedado derivado de um controle Windows Forms. Esses controles também implementam a interface IDataGridViewEditingControl. O modelo de objeto a seguir ilustra o uso desses controles.

Diagrama mostrando a hierarquia do modelo de objeto de controlo de edição do DataGridView.

Os seguintes controles de edição são fornecidos com o controle DataGridView:

Para obter informações sobre como criar seus próprios controles de edição, consulte Como hospedar controles em células DataGridView do Windows Forms.

A tabela a seguir ilustra a relação entre tipos de células, tipos de coluna e controles de edição.

Tipo de célula Controlo alojado Tipo de coluna
DataGridViewButtonCell não aplicável DataGridViewButtonColumn
DataGridViewCheckBoxCell não aplicável DataGridViewCheckBoxColumn
DataGridViewComboBoxCell DataGridViewComboBoxEditingControl DataGridViewComboBoxColumn
DataGridViewImageCell não aplicável DataGridViewImageColumn
DataGridViewLinkCell não aplicável DataGridViewLinkColumn
DataGridViewTextBoxCell DataGridViewTextBoxEditingControl DataGridViewTextBoxColumn

DataGridViewRow

A classe DataGridViewRow exibe os campos de dados de um registro do armazenamento de dados ao qual o controle DataGridView está anexado. Você pode acessar as linhas do controle DataGridView usando a coleção Rows. Você pode acessar as linhas selecionadas usando a coleção SelectedRows. O modelo de objeto a seguir ilustra esse uso e mostra a hierarquia de herança DataGridViewRow.

Diagrama que mostra a hierarquia do Modelo de Objeto DataGridViewRow.

Você pode derivar seus próprios tipos da classe DataGridViewRow, embora isso normalmente não seja necessário. O controle DataGridView tem vários eventos relacionados a linha e propriedades para personalizar o comportamento de seus objetos DataGridViewRow.

Se você habilitar a propriedade DataGridView do controle AllowUserToAddRows, uma linha especial para adicionar novas linhas aparecerá como a última linha. Esta linha faz parte da coleção Rows, mas tem funcionalidades especiais que podem exigir a sua atenção. Para obter mais informações, consulte Usando a linha para novos registros no controle DataGridView do Windows Forms.

Ver também