Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
DataGridView linhas, colunas e cabeçalhos podem ter seu tamanho alterado devido a diferentes ocorrências. A tabela a seguir mostra essas ocorrências.
| Ocorrência | Descrição |
|---|---|
| Redimensionamento do usuário | Os usuários podem fazer ajustes de tamanho arrastando ou clicando duas vezes em divisores de linha, coluna ou cabeçalho. |
| Controlar redimensionamento | No modo de preenchimento de coluna, as larguras de coluna são alteradas quando a largura do controle é alterada. Por exemplo, quando o controle é encaixado em seu formulário pai e o usuário redimensiona o formulário. |
| Alteração do valor da célula | Em modos de dimensionamento automático baseados em conteúdo, os tamanhos são alterados para se ajustarem a novos valores de exibição. |
| Chamada de método | O redimensionamento baseado em conteúdo programático permite que você faça ajustes de tamanho oportunistas com base nos valores da célula no momento da chamada do método. |
| Configuração de propriedade | Você também pode definir valores específicos de altura e largura. |
Por padrão, o redimensionamento do usuário está habilitado, o dimensionamento automático está desabilitado e os valores de células são mais largos do que o recorte de suas colunas.
A tabela a seguir mostra cenários que você pode usar para ajustar o comportamento padrão ou usar opções de dimensionamento específicas para obter efeitos específicos.
| Cenário | Implementação |
|---|---|
| Use o modo de preenchimento de coluna para exibir dados de tamanho semelhante em um número relativamente pequeno de colunas que ocupam toda a largura do controle sem exibir a barra de rolagem horizontal. | Defina a propriedade AutoSizeColumnsMode como Fill. |
| Use o modo de preenchimento de coluna com valores de exibição de tamanhos variados. | Defina a propriedade AutoSizeColumnsMode como Fill. Inicialize larguras relativas de coluna definindo as propriedades da coluna FillWeight ou chamando o método do controle AutoResizeColumns após preencher o controle com dados. |
| Use o modo de preenchimento de coluna com valores de importância variável. | Defina a propriedade AutoSizeColumnsMode como Fill. Defina valores de MinimumWidth grandes para colunas que sempre devem exibir alguns de 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 da tela de fundo do controle. | Defina a propriedade AutoSizeMode da última coluna para Fill e use outras opções de dimensionamento para as outras colunas. Se as outras colunas usarem muito do espaço disponível, defina a propriedade MinimumWidth da última coluna. |
| Exiba uma coluna de largura fixa, como um ícone ou uma coluna de ID. | Defina AutoSizeMode como None e Resizable como False na coluna. Inicialize a sua largura definindo a propriedade Width ou chamando o método do controle AutoResizeColumn depois de preencher o controle com os dados. |
| Ajuste os tamanhos automaticamente sempre que o conteúdo da célula for alterado para evitar o recorte e otimizar o uso do espaço. | Defina uma propriedade de dimensionamento automático para um valor que representa um modo de dimensionamento baseado em conteúdo. Para evitar uma penalidade de desempenho ao trabalhar com grandes quantidades de dados, use um modo de dimensionamento que calcula apenas linhas exibidas. |
| Ajuste os tamanhos para que caibam valores nas linhas exibidas, evitando penalidades de desempenho ao lidar com muitas linhas. | Use os valores de enumeração de modo de dimensionamento apropriados com o redimensionamento automático ou programático. Para ajustar os tamanhos para que os valores se encaixem em linhas recém-exibidas durante a rolagem, chame um método de redimensionamento em um manipulador de eventos Scroll. Para personalizar o redimensionamento de clique duplo do usuário para que apenas os valores em linhas exibidas determinem os novos tamanhos, chame um método de redimensionamento em um manipulador de eventos RowDividerDoubleClick ou ColumnDividerDoubleClick. |
| Ajuste os tamanhos para que se adaptem ao conteúdo das células apenas em ocasiões específicas, evitando assim penalidades de desempenho e permitindo o redimensionamento pelo usuário. | Chame um método de redimensionamento baseado em conteúdo em um manipulador de eventos. Por exemplo, use o evento DataBindingComplete para inicializar tamanhos após a associação e manipular o evento CellValidated ou CellValueChanged para ajustar os tamanhos para compensar as edições ou alterações do usuário em uma fonte de dados associada. |
| Ajuste as alturas de linhas para conteúdo de célula multilinha. | Verifique se as larguras de coluna são apropriadas para exibir parágrafos de texto e usar o dimensionamento automático ou programático de linhas baseadas em conteúdo para ajustar as alturas. Verifique também se as células com conteúdo de várias linhas são exibidas utilizando o estilo de célula WrapMode com o valor True. Normalmente, você usará um modo de dimensionamento automático de colunas para manter as larguras das colunas ou defini-las para larguras específicas antes que as alturas das linhas sejam ajustadas. |
Redimensionando 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 em valores de célula. Para impedir que os usuários redimensionem usando outros modos, como o modo de preenchimento de coluna, defina uma ou mais das seguintes propriedades DataGridView:
Você também pode impedir que os usuários redimensionem linhas ou colunas individuais definindo suas propriedades de Resizable. Por padrão, o valor da propriedade Resizable é baseado no valor da propriedade AllowUserToResizeColumns para colunas e no valor da propriedade AllowUserToResizeRows para linhas. Se você definir explicitamente Resizable como True ou False, no entanto, o valor especificado se sobrepõe ao valor de controle para essa linha ou coluna. Defina Resizable para NotSet para restaurar a herança.
Como NotSet restaura a herança de valor, a propriedade Resizable nunca retornará um valor NotSet, a menos que a linha ou coluna não tenha sido adicionada a um controle DataGridView. Caso precise determinar se o valor da propriedade Resizable de uma linha ou coluna é herdado, verifique a respectiva propriedade State. Se o valor State incluir o sinalizador ResizableSet, o valor da propriedade Resizable não será herdado.
Dimensionamento automático
Há dois tipos de dimensionamento automático no controle DataGridView: modo de preenchimento de coluna e dimensionamento automático baseado em conteúdo.
O modo de preenchimento de coluna faz com que as colunas visíveis no controle preencham a largura da área de exibição do controle. Para obter mais informações sobre esse modo, consulte Modo de Preenchimento de Coluna no controle DataGridView do Windows Forms.
Você também pode configurar linhas, colunas e cabeçalhos para ajustar automaticamente seus tamanhos para se ajustarem ao conteúdo da célula. Nesse caso, o ajuste de tamanho ocorre sempre que o conteúdo da célula é alterado.
Observação
Se você mantiver valores de célula em um cache de dados personalizado usando o modo virtual, o dimensionamento automático ocorrerá quando o usuário edita um valor de célula, mas não ocorre quando você altera um valor armazenado em cache fora de um manipulador de eventos CellValuePushed. Nesse caso, chame o método UpdateCellValue para forçar o controle a atualizar a exibição da célula e aplicar os modos de dimensionamento automático atuais.
Se o dimensionamento automático baseado em conteúdo estiver habilitado apenas para uma dimensão, ou seja, para linhas, mas não para colunas, ou para colunas, mas não para linhas, e WrapMode também estiver habilitado, o ajuste de tamanho também ocorrerá sempre que a outra dimensão for alterada. Por exemplo, se linhas, mas não colunas estiverem configuradas para dimensionamento automático e WrapMode estiver habilitada, os usuários poderão arrastar divisores de coluna para alterar a largura de uma coluna e as alturas de linha serão ajustadas automaticamente para que o conteúdo da célula ainda seja totalmente exibido.
Se você configurar linhas e colunas para dimensionamento automático baseado em conteúdo e WrapMode estiver habilitado, o controle DataGridView ajustará os tamanhos sempre que o conteúdo da célula for alterado e usará uma taxa ideal de altura para largura da célula ao calcular novos tamanhos.
Para configurar o modo de dimensionamento para cabeçalhos e linhas e para colunas que não substituem o valor do controle, defina uma ou mais das seguintes propriedades do DataGridView:
Para substituir o modo de dimensionamento de colunas do controle para uma coluna individual, defina a respectiva propriedade AutoSizeMode como um valor diferente de NotSet. O modo de dimensionamento de uma coluna é determinado por sua propriedade InheritedAutoSizeMode. O valor dessa propriedade baseia-se no valor da propriedade AutoSizeMode da coluna, a menos que esse valor seja NotSet. Caso contrário, o valor AutoSizeColumnsMode do controle será herdado.
Use o redimensionamento automático baseado em conteúdo com cuidado ao trabalhar com grandes quantidades de dados. Para evitar penalidades de desempenho, use os modos de dimensionamento automático que calculam tamanhos com base apenas nas linhas exibidas em vez de analisar todas as linhas no controle. Para obter o desempenho máximo, use o redimensionamento programático para que você possa redimensionar em momentos específicos, como imediatamente após o carregamento de novos dados.
Os modos de dimensionamento automático baseados em conteúdo não afetam as linhas, colunas ou cabeçalhos que você ocultou ao definir a propriedade Visible da linha ou coluna ou as propriedades de controle RowHeadersVisible ou ColumnHeadersVisible como false. Por exemplo, se uma coluna estiver oculta depois de ser dimensionada automaticamente para se ajustar a um valor de 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. O dimensionamento automático não ocorre quando a visibilidade é alterada, portanto, alterar a coluna Visible propriedade de volta para true não a forçará a recalcular seu tamanho com base em seu conteúdo atual.
O redimensionamento baseado em conteúdo programático afeta linhas, colunas e cabeçalhos, independentemente de sua visibilidade.
Redimensionamento programático
Quando o dimensionamento automático é desabilitado, você pode definir programaticamente a largura exata ou altura de linhas, colunas ou cabeçalhos por meio das seguintes propriedades:
Você também pode redimensionar linhas, colunas e cabeçalhos programaticamente para ajustar seu conteúdo usando os seguintes métodos:
Esses métodos redimensionarão linhas, colunas ou cabeçalhos uma vez, em vez de configurá-los para redimensionamento contínuo. Os novos tamanhos são calculados automaticamente para exibir todo o conteúdo da célula sem recorte. Quando você redimensiona programaticamente colunas que têm valores de propriedade InheritedAutoSizeMode de Fill, as larguras calculadas com base no conteúdo são usadas para ajustar proporcionalmente os valores de propriedade da coluna FillWeight, e as larguras das colunas são então calculadas de acordo com essas novas proporções, para que todas as colunas preencham a área de exibição disponível do controle.
O redimensionamento programático é útil para evitar penalidades de desempenho com redimensionamento contínuo. Também é útil fornecer tamanhos iniciais para linhas, colunas e cabeçalhos redimensionáveis pelo usuário e para o modo de preenchimento de colunas.
Normalmente, você chamará os métodos de redimensionamento programáticos em momentos específicos. Por exemplo, você pode redimensionar programaticamente todas as colunas imediatamente após o carregamento de dados ou pode redimensionar programaticamente uma linha específica depois que um valor de célula específico tiver sido modificado.
Personalizando o comportamento de dimensionamento baseado em conteúdo
Você pode personalizar os comportamentos de dimensionamento ao trabalhar com tipos derivados de célula, linha e coluna de DataGridView substituindo os métodos DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight ou DataGridViewColumn.GetPreferredWidth, ou chamando sobrecargas de método de redimensionamento protegido em um controle derivado de DataGridView. Os sobrecarregamentos do método de redimensionamento protegido são projetados para operarem em pares visando obter uma proporção ideal de altura para largura da célula, evitando que as células fiquem excessivamente largas ou altas. Por exemplo, se você chamar a sobrecarga AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) do método AutoResizeRows e passar um valor de false para o parâmetro Boolean, a sobrecarga calculará as alturas e larguras ideais para células na linha, mas ajustará apenas as alturas da linha. Em seguida, você deve chamar o método AutoResizeColumns para ajustar as larguras de coluna ao ideal calculado.
Opções de dimensionamento baseadas em conteúdo
As enumerações usadas pelos métodos e propriedades de dimensionamento têm valores semelhantes para dimensionamento baseado em conteúdo. Com esses valores, você pode limitar quais células são usadas para calcular os tamanhos preferenciais. Para todas as enumerações de dimensionamento, valores com nomes que se referem a células exibidas limitam seus cálculos a células em linhas exibidas. Excluir linhas é útil para evitar uma penalidade de desempenho ao trabalhar com uma grande quantidade de linhas. Você também pode restringir os cálculos para valores de célula nas células de cabeçalho ou que não sejam de cabeçalho.
Consulte também
- 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
- redimensionar colunas e linhas no controle DataGridView do Windows Forms
- Modo de preenchimento de coluna no controle DataGridView dos Windows Forms
- Como definir os modos de dimensionamento do controle DataGridView do Windows Forms
.NET Desktop feedback