Свойство AutoSize

Свойство AutoSize позволяет элементу управления изменять свой размер, если это необходимо, в соответствии со значением свойства PreferredSize. Изменение размеров конкретных элементов управления регулируется заданием свойства AutoSizeMode.

Поведение AutoSize

Свойство AutoSize поддерживают только некоторые элементы управления. Кроме того, некоторые элементы управления, поддерживающие свойство AutoSize, также поддерживают свойство AutoSizeMode.

Поведение, диктуемое свойством AutoSize, немного различается в зависимости от типа элемента управления и значения свойства AutoSizeMode, если оно существует. В таблице ниже описаны варианты поведения, которые действуют всегда, с кратким описанием каждого из них.

Всегда истинное поведение Description
Автоматическое изменение размера — это функция, активируемая во время выполнения. Это означает, что она никогда не увеличивает и не сжимает элемент управления и не оказывает дальнего влияния.
Если размер элемента управления изменяется, значение его свойства Location всегда остается постоянным. Когда содержимое элемента управления приводит к увеличению элемента управления, он увеличивается в направлении вправо и вниз. Элементы управления не увеличиваются до левого края.
Свойства Dock и Anchor учитываются, если AutoSize имеет значение true. Значение свойства Location элемента управления корректируется на правильное значение.

Примечание. Элемент управления Label является исключением из этого правила. Если для свойства AutoSize закрепленного элемента управления Label задано значение true, то элемент управления Label не будет растягиваться.
Свойства MaximumSize и MinimumSize элемента управления всегда учитываются независимо от значения свойства AutoSize. Свойство AutoSize не влияет на свойства MaximumSize и MinimumSize.
Минимальный размер по умолчанию не задан. Это означает, что если для элемента управления задано сжатие до AutoSize и он не имеет содержимого, значение его свойства Size равно 0,0. В этом случае элемент управления будет сжиматься до точки, и он не будет виден.
Если элемент управления не реализует метод GetPreferredSize, метод GetPreferredSize возвращает последнее значение, присвоенное свойству Size. Это означает, что установка для свойства AutoSize значения true не окажет никакого влияния.
Элемент управления в ячейке TableLayoutPanel всегда сжимается в соответствии с ячейкой, пока не будет достигнут ее MinimumSize. Этот размер применяется в качестве максимального размера. Исключением является случай, когда ячейка входит в строку или столбец AutoSize.

Свойство AutoSizeMode

Свойство AutoSizeMode обеспечивает более детализированный контроль над поведением AutoSize по умолчанию. Свойство AutoSizeMode указывает, как элемент управления изменяет свой размер в соответствии с содержимым. Например, содержимым может быть текст для элемента управления Button или дочерние элементы управления для контейнера.

В таблице ниже приведены параметры AutoSizeMode и описывается поведение, диктуемое каждым параметром.

Параметр AutoSizeMode Поведение
GrowAndShrink Размеры элемента управления увеличиваются или уменьшаются по размеру его содержимого.

Значения MinimumSize и MaximumSize учитываются, но текущее значение свойства Size игнорируется.

Это то же поведение, что и у элементов управления со свойством AutoSize и без свойства AutoSizeMode.
GrowOnly Размеры элемента управления могут увеличиваться по размерам его содержимого, однако они не уменьшаются до значения, меньшего заданного свойством Size.

Это значение по умолчанию для AutoSizeMode.

Элементы управления, поддерживающие свойство AutoSize

В таблице ниже перечислены элементы управления, поддерживающие свойства AutoSize и AutoSizeMode.

Поддержка AutoSize Тип элемента управления
- Свойство AutoSize поддерживается.
— Нет свойства AutoSizeMode.
CheckBox

DomainUpDown

Label

LinkLabel

MaskedTextBox (базовый класс — TextBox)

NumericUpDown

RadioButton

TextBox

TrackBar
- Свойство AutoSize поддерживается.
- Свойство AutoSizeMode поддерживается.
Button

CheckedListBox

FlowLayoutPanel

Form

GroupBox

Panel

TableLayoutPanel
— Нет свойства AutoSize. CheckedListBox

ComboBox

DataGridView

DateTimePicker

ListBox

ListView

MaskedTextBox

MonthCalendar

ProgressBar

PropertyGrid

RichTextBox

SplitContainer

TabControl

TabPage

TreeView

WebBrowser

ScrollBar

AutoSize в среде разработки

В таблице ниже описывается, как изменяется размер элемента управления во время разработки в зависимости от значений свойств AutoSize и AutoSizeMode.

Чтобы указать, что размер элемента управления должен изменяться пользователем, переопределите свойство SelectionRules. В этой таблице "не может" означает только Moveable, а "может" — AllSizeable и Moveable.

Параметры AutoSize Возможность изменения размера во время разработки
- AutoSize = true
— Нет свойства AutoSizeMode.
Пользователь не может изменять размер элемента управления во время разработки, за исключением следующих элементов управления:

- TextBox
- MaskedTextBox
- RichTextBox
- TrackBar
- AutoSize = true
- AutoSizeMode = GrowAndShrink
Пользователь не может изменять размер элемента управления во время разработки.
- AutoSize = true
- AutoSizeMode = GrowOnly
Пользователь может изменять размер элемента управления во время разработки. Если задано свойство Size, пользователь может только увеличивать элемент управления.
- AutoSize = false, или свойство AutoSize скрыто. Пользователь может изменять размер элемента управления во время разработки.

Примечание.

С целью повышения производительности конструктор Windows Forms в Visual Studio затемняет свойство AutoSize класса Form. Во время разработки форма ведет себя так, как будто свойство AutoSize имеет значение false, независимо от его фактического значения. Во время выполнения никакие особые правила не применяются, и свойство AutoSize действует в соответствии со своим значением.

См. также