AutoSize 属性概述
AutoSize 属性使控件能够更改其大小(如有必要),以达到由 PreferredSize 属性指定的值。 通过设置 AutoSizeMode 属性,可以调整特定控件的大小调整行为。
AutoSize 行为
只有一些控件支持 AutoSize 属性。 此外,一些支持 AutoSize 属性的控件也支持 AutoSizeMode 属性。
根据特定控件类型以及 AutoSizeMode 属性的值(如果该属性存在),AutoSize 属性可产生某些不同的行为。 下表描述了始终正确的行为,并提供每种行为的简要说明:
始终正确的行为 |
说明 |
---|---|
自动大小调整是运行时功能。 |
这意味着不会在增大或缩小控件后不产生进一步的影响。 |
控件更改大小时其 Location 属性的值始终保持不变。 |
当控件的内容导致控件增大时,控件向右向下增大。 控件不会向左增大。 |
控件的 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 支持 |
控件类型 |
---|---|
|
MaskedTextBox(TextBox 基控件) |
|
|
|
设计环境中的 AutoSize
下表描述了控件在设计时基于其 AutoSize 和 AutoSizeMode 属性的值的大小调整行为。
重写 SelectionRules 属性可确定给定控件是否处于用户可调整大小的状态。 下表中,“不能”表示只有 Moveable,“能”表示 AllSizeable 和 Moveable。
AutoSize 设置 |
设计时调整大小操作 |
---|---|
|
除以下控件外,用户不能在设计时调整控件的大小: |
|
用户不能在设计时调整控件的大小。 |
用户可以在设计时调整控件的大小。 当设置了 Size 属性时,用户只能增加控件的大小。 |
|
用户可以在设计时调整控件的大小。 |
提示
为使工作效率最大化,Windows 窗体设计器隐藏了 Form 类的 AutoSize 属性。 设计时,无论窗体的实际设置如何,该窗体的行为都如同将 AutoSize 属性设置为 false。 运行时,不做任何特殊处理,并按属性设置的指定应用 AutoSize 属性。