Modo virtual no Windows Forms DataGridView Control

Com o modo virtual, você pode gerenciar a interação entre o DataGridView o controle e um cache de dados personalizados. Para implementar o modo virtual, defina a VirtualMode propriedade para true e manipular um ou mais dos eventos descritos neste tópico. Você normalmente manipulará pelo menos o CellValueNeeded o evento, que permite a aparência de controle, os valores no cache de dados.

Modo acoplado e Virtual

Modo virtual é necessário somente quando você precisa complementar ou substituir o modo vinculado. No modo acoplado, você definir a DataSource propriedade e o controle automaticamente carrega os dados da fonte especificada e envia as alterações de usuário proprietário. Você pode controlar quais as colunas acopladas são exibidos e a fonte de dados normalmente manipula operações como classificação.

Complementando o modo vinculado

Você pode complementar o modo acoplado exibindo colunas não acopladas, juntamente com as colunas acopladas. Isso às vezes é chamado "misto" e é útil para exibir a coisas como controles de interface de usuário (UI) ou de valores calculados.

Como as colunas não acopladas estão fora da fonte de dados, elas são ignoradas por operações de classificação da fonte de dados. Portanto, quando você ativar classificação no modo misto, você deve gerenciar os dados não acoplados em um cache local e implementar o modo virtual para permitir que o DataGridView controle interagir com o proprietário.

Para obter mais informações sobre como usar o modo virtual para manter os valores nas colunas não acoplados, consulte os exemplos de DataGridViewCheckBoxColumn.ThreeState propriedade e System.Windows.Forms.DataGridViewComboBoxColumn Tópicos de referência de classe.

Substituindo o modo vinculado

Se o modo vinculado não atender suas necessidades de desempenho, você pode gerenciar todos os seus dados em um cache personalizado através de manipuladores de eventos de modo virtual. Por exemplo, você pode usar o modo virtual para implementar um mecanismo que recupera somente de carregamento de dados de just-in-time quantos dados de um banco de dados em rede é necessário para um desempenho ideal. Esse cenário é particularmente útil ao trabalhar com grandes quantidades de dados através de uma conexão de rede lenta ou com máquinas de clientes que possuem uma quantidade limitada de espaço de armazenamento ou de RAM.

Para obter mais informações sobre como usar o modo virtual em um cenário de just-in-time, consulte Implementando o modo Virtual com Just-In-Time carregamento de dados no Windows Forms DataGridView Control.

Eventos de modo virtual

Se seus dados serão somente leitura, o CellValueNeeded evento pode ser o único evento que você precisará manipular. Eventos de modo virtual adicionais permitem que você ativar a funcionalidade específica como edições de usuário, a adição de linha e a exclusão e a transações de nível de linha.

Alguns padrão DataGridView eventos (como os eventos que ocorrem quando os usuários a adicionar ou excluir linhas ou quando os valores de célula são editados, analisados, validados ou formatados) são úteis no modo virtual, como bem. Você também pode tratar eventos que lhe permitem manter valores normalmente não são armazenados em uma fonte de dados vinculados, como, por exemplo, texto de dica de ferramenta da célula, célula e texto de erro de linha, célula e dados de menu de atalho de linha e dados de altura da linha.

Para obter mais informações sobre como implementar o modo virtual para gerenciar dados de leitura/gravação com um escopo de confirmação de nível de linha, consulte Demonstra Passo a passo: A implementação de modo Virtual o controle DataGridView do Windows Forms.

Para obter um exemplo que implementa o modo virtual com um escopo de confirmação de nível de célula, consulte o VirtualMode tópico de referência de propriedade.

Os seguintes eventos ocorrem somente quando o VirtualMode for definida como true.

Evento

Descrição

CellValueNeeded

Usado pelo controle para recuperar um valor de célula a partir do cache de dados para exibição. Esse evento ocorre somente para as células nas colunas não acopladas.

CellValuePushed

Usado pelo controle para confirmar a entrada do usuário para uma célula para o cache de dados. Esse evento ocorre somente para as células nas colunas não acopladas.

Chamar o UpdateCellValue método ao alterar um valor em cache fora de um CellValuePushed o manipulador de eventos para garantir que o valor atual é exibido no controle e aplicar qualquer automático dimensionando modos o efeito no momento.

NewRowNeeded

Usado pelo controle para indicar a necessidade de uma nova linha no cache de dados.

RowDirtyStateNeeded

Usado pelo controle para determinar se uma linha tem alterações não confirmadas.

CancelRowEdit

Usado pelo controle para indicar que uma linha deve reverter a seus valores armazenados em cache.

Os seguintes eventos são úteis no modo virtual, mas pode ser usados independentemente do VirtualMode configuração de propriedade.

Eventos

Descrição

UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded

Usado pelo controle para indicar quando linhas são excluídas ou adicionados, que ajuda você atualiza o cache de dados de acordo.

CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated

Usada pelo controle para formatar valores de célula para exibir e analisar e validar entrada do usuário.

CellToolTipTextNeeded

Usado pelo controle para recuperar o texto de dica de ferramenta da célula quando o DataSource for definida ou o VirtualMode é a propriedade true.

Célula dicas de ferramenta são exibidas somente quando o ShowCellToolTips valor da propriedade é true.

CellErrorTextNeeded

RowErrorTextNeeded

Usado pelo controle para recuperar o texto de erro de célula ou linha quando o DataSource for definida ou o VirtualMode é a propriedade true.

Chamar o UpdateCellErrorText método ou a UpdateRowErrorText método quando você alterar o texto de erro de célula ou linha para garantir que o valor atual é exibido no controle.

Glifos de erro de célula e linha são exibidos quando o ShowCellErrors e ShowRowErrors os valores de propriedade são true.

CellContextMenuStripNeeded

RowContextMenuStripNeeded

Usado pelo controle para recuperar uma célula ou linha ContextMenuStrip quando o controle DataSource for definida ou o VirtualMode é a propriedade true.

RowHeightInfoNeeded

RowHeightInfoPushed

Usado pelo controle para recuperar ou armazenar informações de altura de linha no cache de dados. Chamar o UpdateRowHeightInfo método ao alterar as informações de altura de linhas em cache fora de um RowHeightInfoPushed o manipulador de eventos para garantir que o valor atual é usado na exibição do controle.

Práticas recomendadas no modo Virtual

Se você estiver implementando o modo virtual para funcionar com eficiência com grandes quantidades de dados, você também deseja garantir que você está trabalhando com eficiência com o DataGridView controle propriamente dito. Para obter mais informações sobre o uso eficiente dos estilos de célula, dimensionamento automático, as seleções e compartilhamento de linha, consulte Práticas recomendadas para escala o controle DataGridView do Windows Forms.

Consulte também

Tarefas

Demonstra Passo a passo: A implementação de modo Virtual o controle DataGridView do Windows Forms

Referência

DataGridView

VirtualMode

Conceitos

Práticas recomendadas para escala o controle DataGridView do Windows Forms

Implementando o modo Virtual com Just-In-Time carregamento de dados no Windows Forms DataGridView Control

Outros recursos

O controle DataGridView do Windows Forms de ajuste de desempenho