Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
DataGridView linhas, colunas e cabeçalhos podem mudar de tamanho como resultado de muitas ocorrências diferentes. 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. |
| Controle de redimensionamento | No modo de preenchimento de coluna, as larguras das colunas mudam quando a largura do controle muda; 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 | Nos modos de dimensionamento automático baseados em conteúdo, os tamanhos mudam para se ajustarem aos novos valores de exibição. |
| Chamada de método | O redimensionamento programático baseado em conteúdo permite fazer ajustes oportunistas de tamanho com base nos valores das células no momento da chamada do método. |
| Configuração da propriedade | Você também pode definir valores específicos de altura e largura. |
Por padrão, o redimensionamento do usuário é habilitado, o dimensionamento automático é desabilitado e os valores de célula que são maiores do que suas colunas são cortados.
A tabela a seguir mostra cenários que você pode usar para ajustar o comportamento padrão ou para usar opções de dimensionamento específicas para obter efeitos específicos.
| Cenário | Execuçã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 as larguras relativas das colunas, definindo as propriedades da coluna FillWeight ou chamando o método do controlo AutoResizeColumns após preencher o controlo 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 use uma opção de dimensionamento diferente do modo de preenchimento para colunas específicas. |
| Use o modo de preenchimento de coluna para evitar exibir o plano de fundo do controle. | Defina a propriedade AutoSizeMode da última coluna como 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 ID. | Defina AutoSizeMode para None e Resizable para False para a coluna. Inicialize a largura definindo a propriedade Width ou chamando o método AutoResizeColumn do controlo depois de preencher o controlo com dados. |
| Ajuste os tamanhos automaticamente sempre que o conteúdo da célula mudar para evitar recortes e otimizar o uso do espaço. | Defina uma propriedade de dimensionamento automático como um valor que represente 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 calcule apenas as linhas exibidas. |
| Ajuste os tamanhos das células para que caibam os valores nas linhas exibidas, evitando penalidades de desempenho ao trabalhar com muitas linhas. | Utilize os valores de enumeração adequados para o modo de dimensionamento com redimensionamento automático ou programático. Para ajustar os tamanhos para acomodar valores em linhas recém-exibidas durante o deslocamento, chame um método de redimensionamento num gestor de eventos Scroll. Para personalizar o redimensionamento de clique duplo do usuário para que apenas os valores nas linhas exibidas determinem os novos tamanhos, chame um método de redimensionamento em um manipulador de eventos RowDividerDoubleClick ou ColumnDividerDoubleClick. |
| Ajuste os tamanhos das células para acomodar o conteúdo das células somente em momentos específicos para evitar impactos no desempenho ou para permitir o redimensionamento manual pelo utilizador. | 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 tamanhos para compensar edições ou alterações do usuário em uma fonte de dados associada. |
| Ajuste as alturas das linhas para o conteúdo das células com várias linhas. | Verifique se as larguras das colunas são apropriadas para exibir parágrafos de texto e use o dimensionamento de linha automático ou programático baseado em conteúdo para ajustar as alturas. Certifique-se também de que as células com conteúdo de várias linhas sejam exibidas usando um WrapMode valor de estilo de célula de True. Normalmente, você usará um modo automático de dimensionamento de coluna para manter as larguras das colunas ou defini-las para larguras específicas antes que as alturas das linhas sejam 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 das células. Para impedir que os utilizadores redimensionem com 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 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 definires explicitamente Resizable como True ou False, no entanto, o valor especificado substituirá o valor de controlo para essa linha ou coluna. Defina Resizable como 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, examine 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. Neste caso, o ajuste de tamanho ocorre sempre que o conteúdo da célula muda.
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 colunas, ou para colunas, mas não 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 colunas para alterar a largura de uma coluna e as alturas das linhas 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 relação altura/largura ideal 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 de controle, defina uma ou mais das seguintes propriedades DataGridView:
Para substituir o modo de dimensionamento de coluna do controle para uma coluna individual, defina sua propriedade AutoSizeMode como um valor diferente de NotSet. O modo de dimensionamento de uma coluna é, na verdade, determinado por sua propriedade InheritedAutoSizeMode. O valor dessa propriedade é baseado no valor da propriedade AutoSizeMode da coluna, a menos que esse valor seja NotSet, caso em que o valor AutoSizeColumnsMode do controle é 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 do controle. Para obter o máximo desempenho, use o redimensionamento programático em vez disso 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 linhas, colunas ou cabeçalhos que você ocultou definindo a propriedade Visible linha ou coluna ou as propriedades RowHeadersVisible de controle ou ColumnHeadersVisible como false. Por exemplo, se uma coluna estiver oculta depois de ser automaticamente dimensionada para ajustar um valor de célula grande, a coluna oculta não mudará 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 muda, 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 programático baseado em conteúdo afeta linhas, colunas e cabeçalhos, independentemente de sua visibilidade.
Redimensionamento Programático
Quando o dimensionamento automático está desativado, você pode definir programaticamente a largura ou altura exata de linhas, colunas ou cabeçalhos através 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. Ao redimensionar programaticamente colunas que têm valores de propriedade InheritedAutoSizeMode de Fill, as larguras calculadas com base no conteúdo são, no entanto, usadas para ajustar proporcionalmente os valores de propriedade da coluna FillWeight, e as larguras reais das colunas são então calculadas de acordo com essas novas proporções, de modo que todas as colunas preencham a área de exibição disponível do controlo.
O redimensionamento programático é útil para evitar penalidades de desempenho com o 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 coluna.
Normalmente, você chamará os métodos de redimensionamento programático 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 determinado valor de célula tiver sido modificado.
Personalizando o comportamento de dimensionamento baseado em conteúdo
Você pode personalizar os comportamentos de dimensionamento ao trabalhar com tipos de célula, linha e coluna derivados de DataGridView, substituindo os métodos DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeightou DataGridViewColumn.GetPreferredWidth, ou chamando sobrecargas de método de redimensionamento protegido em um controlo derivado de DataGridView. As sobrecargas do método protegido de redimensionamento são projetadas para trabalhar em pares para alcançar uma relação ideal entre altura e largura da célula, evitando células excessivamente largas ou altas. Por exemplo, se você chamar a sobrecarga de 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 as células na linha, mas ajustará apenas as alturas da linha. Em seguida, você deve chamar o método AutoResizeColumns para ajustar as larguras das colunas para o ideal calculado.
Opções de dimensionamento baseadas em conteúdo
As enumerações usadas por propriedades e métodos 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 preferidos. Para todas as enumerações de dimensionamento, os valores com nomes que se referem às células exibidas limitam seus cálculos às células nas linhas exibidas. A exclusão de linhas é útil para evitar uma penalidade de desempenho quando você está trabalhando com uma grande quantidade de linhas. Você também pode restringir os cálculos a valores de células em células de cabeçalho ou não cabeçalho.
Ver 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 controlo DataGridView do Windows Forms
- Modo de Preenchimento de Coluna no Control DataGridView do Windows Forms
- Como: Definir os modos de dimensionamento no controlo DataGridView do Windows Forms
.NET Desktop feedback