AutoSize 属性概述

AutoSize 属性使控件能够根据需要更改其大小,以达到 PreferredSize 属性指定的值。 通过设置 AutoSizeMode 属性来调整特定控件的尺寸行为。

AutoSize 行为

只有某些控件支持 AutoSize 属性。 此外,支持 AutoSize 属性的某些控件还支持 AutoSizeMode 属性。

AutoSize 属性会生成一些不同的行为,具体取决于特定控件类型和 AutoSizeMode 属性的值(如果该属性存在)。 下表描述了始终真实的特性,并为每项特性提供了简要说明:

Always true 行为 描述
自动调整大小是一种运行时间功能。 这意味着它永远不会改变控件的大小,因此不会产生进一步的影响。
如果控件更改大小,则其 Location 属性的值始终保持不变。 控件的内容导致控件增大时,控件将向右和向下扩展。 控件不会向左扩展。
AutoSizetrue 时,采用 DockAnchor 属性。 控件的 Location 属性的值调整为正确的值。

注意Label 控件是此规则的例外。 将停靠的 Label 控件的 AutoSize 属性的值设置为 true 时,Label 控件将不会拉伸。
无论控件 AutoSize 属性的值如何,控件的 MaximumSizeMinimumSize 属性始终受到尊重。 MaximumSizeMinimumSize 属性不受 AutoSize 属性的影响。
默认情况下没有设置最小大小。 这意味着,如果控件设置为在 AutoSize 下收缩,并且它没有内容,则其 Size 属性的值为 0,0。 在这种情况下,控件将缩小为点,且不明显可见。
如果控件未实现 GetPreferredSize 方法,GetPreferredSize 方法将返回分配给 Size 属性的最后一个值。 这意味着将 AutoSize 设置为 true 将不起作用。
TableLayoutPanel 单元格中的控件始终会缩小以适应单元格,直到达到其 MinimumSize 这个大小被强制为最大值。 当单元格是 AutoSize 行或列的一部分时,情况并非如此。

AutoSizeMode 属性

AutoSizeMode 属性提供对默认 AutoSize 行为的更精细的控制。 AutoSizeMode 属性指定控件如何根据其内容调整自身的大小。 例如,内容可以是 Button 控件的文本或容器的子控件。

下表显示了 AutoSizeMode 设置以及每个设置效果的说明。

AutoSizeMode 设置 行为
增长与收缩 控件会增大或收缩以包含其内容。

将接受 MinimumSizeMaximumSize 值,但会忽略 Size 属性的当前值。

这与具有 AutoSize 属性的控件的行为相同,没有 AutoSizeMode 属性。
GrowOnly 控件会根据需要增长以容纳其内容,但不会缩小到小于其 Size 属性指定的值。

这是 AutoSizeMode的默认值。

支持 AutoSize 属性的控件

下表列出了支持 AutoSizeAutoSizeMode 属性的控件。

AutoSize 支持 控件类型
支持 - AutoSize 属性。
- 无 AutoSizeMode 属性。
CheckBox

DomainUpDown

Label

LinkLabel

MaskedTextBoxTextBox 基)

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

下表根据控件 AutoSizeAutoSizeMode 属性的值,在设计时描述控件的大小调整行为。

替代 SelectionRules 属性以确定给定控件是否处于用户可调整大小的状态。 在下表中,“不能”表示仅 Moveable,“能”表示 AllSizeableMoveable

AutoSize 设置 设计时调整大小手势
- AutoSize = true
- 无 AutoSizeMode 属性。
用户无法在设计时调整控件的大小,以下控件除外:

- TextBox
- MaskedTextBox
- RichTextBox
- TrackBar
- AutoSize = true
- AutoSizeMode = GrowAndShrink
用户无法在设计时调整控件的大小。
- AutoSize = true
- AutoSizeMode = GrowOnly
用户可以在设计时调整控件的大小。 设置 Size 属性时,用户只能增加控件的大小。
- AutoSize = falseAutoSize 属性处于隐藏状态。 用户可以在设计时调整控件的大小。

说明

为了最大限度地提高工作效率,Visual Studio 中的 Windows 窗体设计器会隐藏 Form 类的 AutoSize 属性。 在设计时,窗体的行为如同 AutoSize 属性设置为 false,而不考虑其实际设置如何。 在运行时,不会进行特殊调整,并且会按照属性设置指定的方式应用 AutoSize 属性。

另请参阅