AutoSize 属性概述
AutoSize 属性使控件能够根据需要更改其大小,以达到 PreferredSize 属性指定的值。 通过设置 AutoSizeMode
属性来调整特定控件的尺寸行为。
AutoSize 行为
只有某些控件支持 AutoSize 属性。 此外,支持 AutoSize 属性的某些控件还支持 AutoSizeMode
属性。
AutoSize 属性会生成一些不同的行为,具体取决于特定控件类型和 AutoSizeMode
属性的值(如果该属性存在)。 下表描述了始终真实的特性,并为每项特性提供了简要说明:
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 设置 | 行为 |
---|---|
增长与收缩 | 控件会增大或收缩以包含其内容。 将接受 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 属性。