AutoSize 属性概述

必要情况下,可使用 AutoSize 属性更改控件的大小,以获取 PreferredSize 属性指定的值。 可通过设置 AutoSizeMode 属性来调整特定控件的调整大小行为。

AutoSize 行为

仅某些控件支持 AutoSize 属性。 此外,支持 AutoSize 属性的某些控件也支持 AutoSizeMode 属性。

AutoSize 属性会生成一些不同的行为,具体取决于特定的控件类型和 AutoSizeMode 属性的值(如果属性存在)。 下表描述了始终为 true 的行为,并简要介绍了每个行为:

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 设置 行为
GrowAndShrink 控件根据它的内容增大或缩小。

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

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

这是 AutoSizeMode 的默认值。

支持 AutoSize 属性的控件

下表列出了支持 AutoSize 属性和 AutoSizeMode 属性的控件。

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 属性。

另请参阅