Información general sobre la propiedad AutoSize

La propiedad AutoSize habilita un control para cambiar su tamaño en caso necesario, a fin de que se ajuste al tamaño especificado por la propiedad PreferredSize. El comportamiento de ajuste de tamaño para controles concretos se configura estableciendo la propiedad AutoSizeMode.

Comportamiento de Ajuste de tamaño automático

Solo algunos controles admiten la propiedad AutoSize. Además, algunos controles que admiten la propiedad AutoSize también admiten la propiedad AutoSizeMode.

La propiedad AutoSize produce un comportamiento algo diferente, según el tipo de control específico y el valor de la propiedadAutoSizeMode (si la propiedad existe). En la tabla siguiente se describen los comportamientos que siempre son TRUE y se proporciona una breve descripción de cada uno:

Comportamiento siempre "true" Descripción
El ajuste automático de tamaño es una característica de tiempo de ejecución. Esto significa que nunca aumenta o reduce un control y luego no tiene ningún otro efecto.
Si un control cambia de tamaño, el valor de su propiedad Location siempre permanece constante. Cuando el contenido de un control hace que crezca, el control crece hacia la derecha y hacia abajo. Los controles no crecen a la izquierda.
Se respetan las propiedades Dock y Anchor cuando AutoSize es true. El valor de la propiedad Location del control se ajusta al valor correcto.

Nota el control Label es la excepción a esta regla. Al establecer el valor de la propiedad AutoSize de un control Label acoplado en true, el control Label no se ajustará.
Siempre se respetan las propiedades MaximumSize y MinimumSize de un control, independientemente del valor de su propiedad AutoSize. Las propiedades MaximumSize y MinimumSize no se ven afectadas por la propiedad AutoSize.
No hay ningún tamaño mínimo establecido de forma predeterminada. Esto significa que si un control se establece para que se reduzca por debajo de AutoSize y no tiene contenido, el valor de su propiedad Size es 0,0. En este caso, el control se reducirá hasta un punto y no será visible fácilmente.
Si un control no implementa el método GetPreferredSize, el método GetPreferredSize devuelve el último valor asignado a la propiedad Size. Esto significa que el establecimiento de AutoSize en true no tendrá ningún efecto.
Un control en una celda de TableLayoutPanel siempre se reduce para ajustarse a la celda hasta que se alcanza su MinimumSize. Este tamaño se aplica como tamaño máximo. Este no es el caso cuando la celda forma parte de una fila o columna de AutoSize.

Propiedad AutoSizeMode

La propiedad AutoSizeMode proporciona un control más específico sobre el comportamiento predeterminado de AutoSize. La propiedad AutoSizeMode especifica cómo un control ajusta su propio tamaño a su contenido. El contenido, por ejemplo, podría ser el texto de un control Button o los controles secundarios de un contenedor.

En la tabla siguiente se muestran la configuración AutoSizeMode y una descripción del comportamiento que establece cada valor.

Configuración de AutoSizeMode Comportamiento
GrowAndShrink El control se expande o se contrae para ajustarse a su contenido.

Se respetan los valores de MinimumSize y MaximumSize, pero se omite el valor actual de la propiedad Size.

Este es el mismo comportamiento que los controles con la propiedad AutoSize y sin ninguna propiedad AutoSizeMode.
GrowOnly El control se expande todo lo necesario para ajustarse a su contenido, pero no se contrae menos que el valor especificado por su propiedad Size.

Este es el valor predeterminado de la clase AutoSizeMode.

Controles que admiten la propiedad de Ajuste de tamaño automático

En la tabla siguiente se enumeran los controles que admiten las propiedades AutoSize y AutoSizeMode.

Compatibilidad con el Ajuste de tamaño automático Tipo de control
- AutoSize propiedad admitida.
- Sin propiedad AutoSizeMode.
CheckBox

DomainUpDown

Label

LinkLabel

MaskedTextBox (TextBox base)

NumericUpDown

RadioButton

TextBox

TrackBar
- AutoSize propiedad admitida.
- AutoSizeMode propiedad admitida.
Button

CheckedListBox

FlowLayoutPanel

Form

GroupBox

Panel

TableLayoutPanel
- Sin propiedad AutoSize. CheckedListBox

ComboBox

DataGridView

DateTimePicker

ListBox

ListView

MaskedTextBox

MonthCalendar

ProgressBar

PropertyGrid

RichTextBox

SplitContainer

TabControl

TabPage

TreeView

WebBrowser

ScrollBar

Ajuste de tamaño automático en el entorno de diseño

En la tabla siguiente se describe el comportamiento de ajuste de tamaño de un control en tiempo de diseño en función del valor de sus propiedades AutoSize y AutoSizeMode.

Invalide la propiedad SelectionRules para determinar si un control determinado está en un estado que permite el ajuste de tamaño por el usuario. En la tabla siguiente, «no puede» significa Moveable únicamente, y «puede» significa AllSizeable y Moveable.

Configuración del Ajuste de tamaño automático Gesto de ajuste de tamaño en tiempo de diseño
- AutoSize = true
- Sin propiedad AutoSizeMode.
El usuario no puede cambiar el tamaño del control en tiempo de diseño, excepto para los siguientes controles:

- TextBox
- MaskedTextBox
- RichTextBox
- TrackBar
- AutoSize = true
- AutoSizeMode = GrowAndShrink
El usuario no puede cambiar el tamaño del control en tiempo de diseño.
- AutoSize = true
- AutoSizeMode = GrowOnly
El usuario puede cambiar el tamaño del control en tiempo de diseño. Cuando se establece la propiedad Size, el usuario solo puede aumentar el tamaño del control.
- AutoSize = false, o AutoSize la propiedad está oculta. El usuario puede cambiar el tamaño del control en tiempo de diseño.

Nota

Para maximizar la productividad, el Diseñador de Windows Forms en Visual Studio sombrea la propiedad AutoSize de la clase Form. En tiempo de diseño el formulario se comporta como si la propiedad AutoSize se hubiera establecido en false, independientemente de su configuración real. En tiempo de ejecución no se realiza ningún alojamiento especial y la propiedad AutoSize se aplica según lo especificado por el valor de propiedad.

Consulte también