AutoSize 屬性概觀

AutoSize 屬性可讓控制項視需要變更其大小,以達到 PreferredSize 屬性所指定的值。 您可以透過設定 AutoSizeMode 屬性來調整特定控制項的大小調整行為。

AutoSize 行為

只有某些控制項才支援 AutoSize 屬性。 此外,某些支援 AutoSize 屬性的控制項也支援 AutoSizeMode 屬性。

AutoSize 屬性會產生稍微不同的行為,視屬性存在時的特定控制項類型和 AutoSizeMode 屬性的值而定。 下表描述一律為 true 的行為,並提供每個行為的簡短描述:

一律為 True 行為 描述
自動調整大小是一項執行階段功能。 這意味著它永遠不會增加或縮小控制項的大小,因此不會產生進一步的影響。
如果控制項的大小發生了變更,則其 Location 屬性的值會始終保持不變。 當控制項內的內容增加而導致其變大時,該控制項會向右和向下擴充尺寸。 控制項不會向左擴充尺寸。
AutoSizetrue 時,會遵循 DockAnchor 屬性。 控制項的 Location 屬性的值會調整為正確的值。

注意 Label 控制項是此規則的例外狀況。 當您將停駐的 Label 控制項的 AutoSize 屬性的值設為 true 時,Label 控制項不會拉伸縮放。
會一律遵循控制項的 MaximumSizeMinimumSize 屬性 (無論其 AutoSize 屬性的值為何)。 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 屬性的控制項

下表列出支援 AutoSizeAutoSizeMode 屬性的控制項。

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

下表描述了控制項在設計時根據其 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 Forms 設計工具會隱藏 Form 類別的 AutoSize 屬性。 在設計時,表單的行為就像將 AutoSize 屬性設為 false 一樣 (無論其實際設定為何)。 在執行階段,不會進行任何特殊的調整,AutoSize 屬性會按照屬性設定的指定來套用。

另請參閱