Compartilhar via


Opções de controle do Windows Forms DataGridView de dimensionamento.

DataGridViewlinhas, colunas e cabeçalhos podem alterar o tamanho do resultado de muitas ocorrências diferentes. A tabela a seguir mostra essas ocorrências.

Ocorrência

Descrição

Redimensionamento de usuário

Os usuários podem fazer ajustes de tamanho arrastando ou clicando duas vezes os divisores de cabeçalho, coluna ou linha.

Redimensionamento de controle

No modo de preenchimento de coluna, alterar larguras de coluna quando a largura do controle é alterado; Por exemplo, quando o controle está ancorado a seu formulário pai e o usuário redimensiona o formulário.

Alteração de valor da célula

Nos modos de dimensionamento automático de conteúdo com base, tamanhos de alterar para ajustar os novos valores de exibição.

Chamada de método

Redimensionamento através de programação baseada em conteúdo permite que você faça os ajustes de tamanho oportunista com base nos valores de célula no momento da chamada do método.

Configuração da propriedade

Você também pode definir a altura e a valores de largura.

Por padrão, o redimensionamento de usuário estiver habilitado, dimensionamento automático está desativado e os valores de célula são mais largos que suas colunas estão cortados.

A tabela a seguir mostra cenários que você pode usar para ajustar o comportamento padrão ou usar opções de dimensionamento específico para obter efeitos específicos.

Cenário

Implementação

Usar o modo de preenchimento de coluna para a exibição da mesma forma em tamanho de dados em um número relativamente pequeno de colunas que ocupar toda a largura do controle sem exibir a barra de rolagem horizontal.

Defina a propriedade AutoSizeColumnsMode como Fill.

Usar o modo de preenchimento de coluna com exibir valores de tamanhos variados.

Defina a propriedade AutoSizeColumnsMode como Fill. Inicializar as larguras de coluna relativa, definindo a coluna FillWeight Propriedades ou ligando o controle AutoResizeColumns método após preencher o controle com dados.

Use o modo de preenchimento de coluna com valores de variáveis de importância.

Defina a propriedade AutoSizeColumnsMode como Fill. Definir um grande MinimumWidth valores para as colunas que sempre devem exibir alguns dos seus dados ou usar uma opção de dimensionamento, diferente do modo de preenchimento para colunas específicas.

Use o modo de preenchimento de coluna para evitar a exibição do plano de fundo do controle.

Definir o AutoSizeMode a propriedade da última coluna para Fill e usar outras opções de dimensionamento para outras colunas. Se as outras colunas usam muito espaço disponível, defina a MinimumWidth a propriedade da última coluna.

Exiba uma coluna de largura fixa, como, por exemplo, um ícone ou uma coluna de identificação.

Definir AutoSizeMode para None e Resizable para False da coluna. Inicializar sua largura, definindo a Width propriedade ou ligando o controle AutoResizeColumn método após preencher o controle com dados.

Ajuste tamanhos automaticamente sempre que o conteúdo da célula alterar para evitar o corte e otimizar o uso de espaço.

Defina uma propriedade de dimensionamento automático para um valor que representa um modo de dimensionamento baseados em conteúdo. Para evitar uma penalidade de desempenho ao trabalhar com grandes quantidades de dados, use um modo de dimensionamento que calcula somente as linhas exibidas.

Ajuste tamanhos para ajustar os valores nas linhas exibidas para evitar penalidades de desempenho ao trabalhar com várias linhas.

Use os valores de enumeração de modo de dimensionamento apropriado com o redimensionamento automático ou através de programação. Para ajustar os tamanhos para ajustar os valores nas linhas recentemente exibidas enquanto se rola, chamar um método de redimensionamento em um Scroll manipulador de eventos. Para personalizar o clique duplo do usuário redimensionar para que apenas os valores nas linhas exibidas determinam os tamanhos de novos, chamar um método de redimensionamento em um RowDividerDoubleClick ou ColumnDividerDoubleClick manipulador de eventos.

Ajuste tamanhos para caber o conteúdo de célula apenas em horários específicos para evitar penalidades de desempenho ou para permitir o redimensionamento do usuário.

Chame um método de redimensionamento de conteúdo com base em um manipulador de eventos. Por exemplo, use o DataBindingComplete evento para inicializar tamanhos após fazer a ligação e lidar com o CellValidated ou CellValueChanged evento para ajustar os tamanhos para compensar as edições do usuário ou alterações em uma fonte de dados ligados.

Ajuste as alturas de linha para o conteúdo da célula de várias linhas.

Certifique-se de que as larguras de coluna são apropriadas para exibir os parágrafos de texto e usar o dimensionamento de linha automática ou através de programação baseada em conteúdo para ajustar a altura. Também garantir que as células com o conteúdo de várias linhas são exibidas usando um WrapMode valor de estilo de célula True.

Normalmente, você usará um modo de dimensionamento automático de coluna para manter as larguras de coluna ou defini-las para larguras específicas antes de alturas de linha são ajustadas.

Redimensionamento com o Mouse.

Por padrão, os usuários podem redimensionar linhas, colunas e cabeçalhos que não usam um modo de dimensionamento automático com base nos valores de célula. Para impedir que usuários redimensionamento de outros modos, como o modo de preenchimento de coluna, defina um ou mais dos seguintes DataGridView Propriedades:

Você também pode impedir os usuários redimensionem individuais linhas ou colunas, definindo seus Resizable Propriedades. Por padrão, o Resizable valor da propriedade se baseia o AllowUserToResizeColumns valor de propriedade de colunas e o AllowUserToResizeRows valor da propriedade para linhas. Se você definir explicitamente Resizable para True ou False, contudo, as substituições de valor especificado, o valor do controle é para a linha ou coluna. Definir Resizable para NotSet para restaurar a herança.

Porque NotSet restaura a herança de valor, o Resizable propriedade nunca retornará um NotSet valor, a menos que a linha ou coluna não foi adicionada para um DataGridView de controle. Se você precisa determinar se o Resizable o valor de propriedade de uma linha ou coluna é herdado, examine sua State propriedade. Se a State valor inclui o ResizableSet sinalizador, o Resizable o valor da propriedade não é herdado.

Dimensionamento automático

Há dois tipos de dimensionamento automático na DataGridView controle: o modo de preenchimento de coluna e baseados em conteúdo dimensionamento automático.

O modo de preenchimento de coluna faz com que as colunas visíveis no controle para preencher a largura da área de exibição do controle. Para obter mais informações sobre este modo, consulte Modo de controle do Windows Forms DataGridView de preenchimento de coluna.

Você também pode configurar as linhas, colunas e cabeçalhos para ajustar automaticamente seus tamanhos para ajustar seu conteúdo da célula. Nesse caso, o ajuste de tamanho ocorre sempre que o conteúdo da célula é alterado.

ObservaçãoObservação

Se você mantiver os valores de célula em um cache de dados personalizados usando o modo virtual, o dimensionamento automático ocorre quando o usuário edita o valor de uma célula, mas não ocorre quando você altera um valor em cache fora de um CellValuePushed manipulador de eventos. Nesse caso, chame o UpdateCellValue método para forçar o controle para atualizar a exibição de célula e aplique os modos de dimensionamento automático atual.

Se baseados em conteúdo dimensionamento automático estiver ativado para uma dimensão só — que é, linhas, mas não em colunas ou colunas, mas não linhas — e WrapMode também estiver ativada, o ajuste de tamanho também ocorre sempre que a outra dimensão alterações. Por exemplo, se as linhas, mas não colunas estão configuradas para o dimensionamento automático e WrapMode é ativada, os usuários podem arrastar os divisores de coluna para alterar a largura de uma coluna e alturas de linha ajustará automaticamente para que o conteúdo da célula ainda totalmente é exibido.

Se você configurar as linhas e colunas para o dimensionamento automático de conteúdo com base e WrapMode está habilitado, o DataGridView controle ajustará os tamanhos, sempre que o conteúdo da célula alterada e será usada uma taxa de altura e largura da célula ideal ao calcular novos tamanhos.

Para configurar o modo de dimensionamento para cabeçalhos de linhas e de colunas que não substituem o valor do controle, defina um ou mais dos seguintes DataGridView Propriedades:

Para substituir o modo de dimensionamento de coluna do controle de uma coluna individual, defina sua AutoSizeMode propriedade para um valor diferente de NotSet. Na verdade, o modo de dimensionamento para uma coluna é determinado pelo seu InheritedAutoSizeMode propriedade. O valor desta propriedade baseia-se a coluna AutoSizeMode valor de propriedade, a menos que seja NotSet, que nesse caso o controle AutoSizeColumnsMode o valor é herdado.

Use baseados em conteúdo redimensionamento automático com cuidado ao trabalhar com grandes quantidades de dados. Para evitar penalidades de desempenho, use os modos de dimensionamento automático que calculam os tamanhos, com base somente nas linhas exibidas, em vez de analisar cada linha no controle. Para obter desempenho máximo, o uso programático redimensionamento em vez disso, para que você pode redimensionar em horários específicos, tais como imediatamente após os novos dados é carregado.

Modos de dimensionamento automático de conteúdo com base não afetam a linhas, colunas ou cabeçalhos que você tenha ocultado definindo a linha ou coluna Visible o controle ou propriedade de RowHeadersVisible ou ColumnHeadersVisible Propriedades para false. Por exemplo, se uma coluna estiver oculta, depois que ela é dimensionada automaticamente para ajustar o valor de uma célula grande, a coluna oculta não alterará seu tamanho se a linha que contém o valor da célula grande for excluída. Dimensionamento automático não ocorre quando a visibilidade é alterado, portanto, a alteração da coluna Visible propriedade de volta para true não obrigará a recalcular o seu tamanho com base em seu conteúdo atual.

Redimensionamento através de programação baseada em conteúdo afeta as linhas, colunas e cabeçalhos, independentemente de sua visibilidade.

Redimensionamento de programação

Quando o dimensionamento automático está desativado, você pode definir programaticamente a largura exata ou a altura das linhas, colunas ou cabeçalhos através das seguintes propriedades:

Também programaticamente, você pode redimensionar linhas, colunas e cabeçalhos para ajustar seu conteúdo usando os seguintes métodos:

Esses métodos irá redimensionar linhas, colunas ou cabeçalhos de uma vez em vez de configurá-los para redimensionamento contínua. Novos tamanhos são calculados automaticamente para exibir todo o conteúdo de célula sem corte. Quando você programaticamente redimensionar colunas que tenham InheritedAutoSizeMode os valores de propriedade de Fill, no entanto, as larguras de calculado com base em conteúdo são usadas para ajustar proporcionalmente a coluna FillWeight valores de propriedade e as larguras de coluna, na verdade, são, em seguida, calculado de acordo com essas novas proporções para que todas as colunas preencher a área de exibição disponíveis do controle.

Redimensionamento programático é útil para evitar penalidades de desempenho com redimensionamento contínua. Também é útil fornecer os tamanhos iniciais para cabeçalhos de colunas e linhas redimensionáveis de usuários e para o modo de preenchimento de coluna.

Normalmente, você chamará os métodos programáticos de redimensionamento em horários específicos. Por exemplo, você programaticamente pode redimensionar todas as colunas imediatamente após o carregamento de dados ou você pode programaticamente redimensionar uma linha específica após a modificação do valor de uma célula específica.

Personalizar o comportamento de dimensionamento baseados em conteúdo

Você pode personalizar os comportamentos de dimensionamento quando estiver trabalhando com derivada DataGridView tipos de célula, linha e coluna, substituindo o DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight, ou DataGridViewColumn.GetPreferredWidth métodos ou chamando protegido contra sobrecargas de método de redimensionamento em um derivado DataGridView de controle. Sobrecargas de método de redimensionamento protegido são projetadas para trabalhar em pares para atingir uma taxa de altura e largura da célula ideal, evitando excessivamente largura ou altura de células. Por exemplo, se você chamar o AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) de sobrecarga da AutoResizeRows método e passar um valor de false para o Boolean parâmetro, a sobrecarga calculará o ideais alturas e larguras de células na linha, mas ele irá ajustar as alturas de linha apenas. Em seguida, você deve chamar o AutoResizeColumns método para ajustar as larguras de coluna calculada ideal.

Opções de dimensionamento baseados em conteúdo

As enumerações usadas por métodos e propriedades de dimensionamento possuem valores semelhantes para dimensionamento baseados em conteúdo. Com esses valores, você pode limitar quais células são usadas para calcular o tamanho preferencial. Para todas as enumerações de dimensionamento, os valores com nomes que se referem a células exibidas limitam seus cálculos para células nas linhas exibidas. Exclusão de linhas é útil para evitar uma penalidade de desempenho quando você estiver trabalhando com uma grande quantidade de linhas. Você também pode restringir os cálculos em valores de célula em células de cabeçalho ou cabeçalho.

Consulte também

Tarefas

Como: Definir os modos de dimensionamento do Windows Forms DataGridView Control

Referência

DataGridView

DataGridView.AllowUserToResizeColumns

DataGridView.AllowUserToResizeRows

DataGridView.ColumnHeadersHeightSizeMode

DataGridView.RowHeadersWidthSizeMode

DataGridViewBand.Resizable

DataGridView.AutoSizeColumnsMode

DataGridView.AutoSizeRowsMode

DataGridViewColumn.AutoSizeMode

DataGridViewColumn.InheritedAutoSizeMode

DataGridView.RowHeadersWidth

DataGridView.ColumnHeadersHeight

DataGridViewRow.Height

DataGridViewColumn.Width

DataGridView.AutoResizeColumn

DataGridView.AutoResizeColumns

DataGridView.AutoResizeColumnHeadersHeight

DataGridView.AutoResizeRow

DataGridView.AutoResizeRows

DataGridView.AutoResizeRowHeadersWidth

DataGridViewAutoSizeRowMode

DataGridViewAutoSizeRowsMode

DataGridViewAutoSizeColumnMode

DataGridViewAutoSizeColumnsMode

DataGridViewColumnHeadersHeightSizeMode

DataGridViewRowHeadersWidthSizeMode

Conceitos

Modo de controle do Windows Forms DataGridView de preenchimento de coluna

Outros recursos

Redimensionamento de colunas e linhas em que o controle DataGridView do Windows Forms