Visão geral da propriedade AutoSize

A AutoSize propriedade permite que um controle altere seu tamanho, se necessário, para atingir o valor especificado pela PreferredSize propriedade. Você ajusta o comportamento de dimensionamento para controles específicos configurando a propriedade AutoSizeMode.

Comportamento de AutoSize

Apenas alguns controles oferecem suporte à AutoSize propriedade. Além disso, alguns controles que dão suporte à propriedade também dão suporte à AutoSizeAutoSizeMode propriedade.

A AutoSize propriedade produz um comportamento um pouco diferente, dependendo do tipo de controle específico e do valor da AutoSizeMode propriedade, se a propriedade existir. A tabela a seguir descreve os comportamentos que sempre são verdadeiros e fornece uma breve descrição de cada um:

Comportamento sempre verdadeiro Descrição
O dimensionamento automático é um recurso de tempo de execução. Isso significa que ele nunca aumenta ou diminui um controle e, em seguida, não tem mais efeito.
Se um controle alterar o tamanho, o valor de sua Location propriedade sempre permanecerá constante. Quando o conteúdo de um controle faz com que ele cresça, o controle aumenta para a direita e para baixo. Controles não crescem para a esquerda.
As Dock propriedades e Anchor são honradas quando AutoSize é true. O valor da propriedade do Location controle é ajustado para o valor correto.

Observação O Label controle é a exceção a essa regra. Quando você define o valor da propriedade de um controle encaixado Label como true, o Label controle AutoSize não será estendido.
Um MaximumSize controle e MinimumSize propriedades são sempre honrados, independentemente do valor de sua AutoSize propriedade. As MaximumSize propriedades e MinimumSize não são afetadas pela AutoSize propriedade.
Não há um tamanho mínimo definido por padrão. Isso significa que, se um controle estiver definido para diminuir e AutoSize não tiver conteúdo, o valor de sua Size propriedade será 0,0. Nesse caso, o controle será reduzido a um ponto e não ficará visível imediatamente.
Se um controle não implementar o método, o GetPreferredSize método retornará o GetPreferredSizeSize último valor atribuído à propriedade. Isso significa que a configuração AutoSize de true não terá efeito.
Um controle em uma TableLayoutPanel célula sempre encolhe para caber na célula até que ela MinimumSize seja atingida. Esse tamanho é imposto como um tamanho máximo. Esse não é o caso quando a célula faz parte de uma AutoSize linha ou coluna.

Propriedade AutoSizeMode

A AutoSizeMode propriedade fornece um controle mais refinado sobre o comportamento padrão AutoSize . A propriedade AutoSizeMode especifica como um controle dimensiona a si mesmo de acordo com seu conteúdo. O conteúdo, por exemplo, pode ser o texto de um controle ou os controles filho de um Button contêiner.

A tabela a seguir mostra as AutoSizeMode configurações e uma descrição do comportamento que cada configuração provoca.

Configuração de AutoSizeMode Comportamento
GrowAndShrink O controle aumenta ou diminui para conter o conteúdo.

Os MinimumSize valores e MaximumSize são honrados, mas o valor atual da Size propriedade é ignorado.

Esse é o mesmo comportamento dos controles com a AutoSize propriedade e nenhuma AutoSizeMode propriedade.
GrowOnly O controle cresce tanto quanto necessário para abranger seu conteúdo, mas não diminuirá menos do que o valor especificado por sua Size propriedade.

Esse é o valor padrão de AutoSizeMode.

Controles que dão suporte à propriedade AutoSize

A tabela a seguir lista os controles que oferecem suporte às AutoSize propriedades e AutoSizeMode .

Suporte para AutoSize Tipo de controle
Suporte para a propriedade - AutoSize.
- Não tem a propriedade AutoSizeMode.
CheckBox

DomainUpDown

Label

LinkLabel

MaskedTextBoxTextBox( base)

NumericUpDown

RadioButton

TextBox

TrackBar
Suporte para a propriedade - AutoSize.
Suporte para a propriedade - AutoSizeMode.
Button

CheckedListBox

FlowLayoutPanel

Form

GroupBox

Panel

TableLayoutPanel
- Não tem a propriedade AutoSize. CheckedListBox

ComboBox

DataGridView

DateTimePicker

ListBox

ListView

MaskedTextBox

MonthCalendar

ProgressBar

PropertyGrid

RichTextBox

SplitContainer

TabControl

TabPage

TreeView

WebBrowser

ScrollBar

AutoSize no ambiente de design

A tabela a seguir descreve o comportamento de dimensionamento de um controle em tempo de design, com base no valor de suas AutoSize propriedades e AutoSizeMode .

Substitua a SelectionRules propriedade para determinar se um determinado controle está em um estado redimensionável pelo usuário. Na tabela a seguir, "não pode" significa apenas, "pode" significa MoveableAllSizeable e Moveable.

Configurações de AutoSize Gesto de dimensionamento em tempo de design
- AutoSize = true
- Não tem a propriedade AutoSizeMode.
O usuário não pode redimensionar o controle em tempo de design, exceto para os seguintes controles:

- TextBox
- MaskedTextBox
- RichTextBox
- TrackBar
- AutoSize = true
- AutoSizeMode = GrowAndShrink
O usuário não pode redimensionar o controle em tempo de design.
- AutoSize = true
- AutoSizeMode = GrowOnly
O usuário pode redimensionar o controle em tempo de design. Quando a Size propriedade é definida, o usuário só pode aumentar o tamanho do controle.
- AutoSize = false, ou AutoSize a propriedade está oculta. O usuário pode redimensionar o controle em tempo de design.

Observação

Para maximizar a produtividade, o Windows Forms Designer no Visual Studio sombra a propriedade para a AutoSizeForm classe. Em tempo de design, o formulário se comporta como se a AutoSize propriedade estivesse definida como false, independentemente de sua configuração real. No tempo de execução, nenhuma acomodação especial é feita e a AutoSize propriedade é aplicada conforme especificado pela configuração da propriedade.

Confira também