AutoSize 属性概述
必要情况下,可使用 AutoSize 属性更改控件的大小,以获取 PreferredSize 属性指定的值。 可通过设置 AutoSizeMode
属性来调整特定控件的调整大小行为。
AutoSize 行为
仅某些控件支持 AutoSize 属性。 此外,支持 AutoSize 属性的某些控件也支持 AutoSizeMode
属性。
AutoSize 属性会生成一些不同的行为,具体取决于特定的控件类型和 AutoSizeMode
属性的值(如果属性存在)。 下表描述了始终为 true 的行为,并简要介绍了每个行为:
Always true 行为 | 说明 |
---|---|
自动调整大小是一种运行时间功能。 | 这意味着它永远不会增大或缩小控件,因此不会产生进一步的影响。 |
即使控件更改大小,它的 Location 属性的值也始终保持不变。 | 控件的内容导致控件增大时,控件将向右和向下扩展。 控件不会向左侧扩展。 |
AutoSize 为 true 时,采用 Dock 和 Anchor 属性。 |
控件的 Location 属性的值将调整为正确值。 注意:Label 控件是此项规则的例外情况。 将停靠的 Label 控件的 AutoSize 属性的值设置为 true 时,Label 控件将不会拉伸。 |
无论控件的 AutoSize 属性的值如何,始终采用其 MaximumSize 和 MinimumSize 属性。 | MaximumSize 和 MinimumSize 属性不受 AutoSize 属性的影响。 |
默认情况下,不设置最小大小。 | 这意味着,如果在 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 属性处于隐藏状态。 |
用户可以在设计时调整控件的大小。 |
注意
为了最大限度地提高工作效率,Visual Studio 中的 Windows 窗体设计器将隐藏 Form 类的 AutoSize 属性。 在设计时,窗体的行为如同 AutoSize 属性设置为 false
,而不考虑其实际设置如何。 在运行时,不会进行特殊调整,并且会按照属性设置指定的方式应用 AutoSize 属性。