AutoSize 屬性概觀
AutoSize 屬性可讓控制項視需要變更其大小,以達到 PreferredSize 屬性所指定的值。 您可以透過設定 AutoSizeMode
屬性來調整特定控制項的大小調整行為。
AutoSize 行為
只有某些控制項才支援 AutoSize 屬性。 此外,某些支援 AutoSize 屬性的控制項也支援 AutoSizeMode
屬性。
AutoSize 屬性會產生稍微不同的行為,視屬性存在時的特定控制項類型和 AutoSizeMode
屬性的值而定。 下表描述一律為 true 的行為,並提供每個行為的簡短描述:
一律為 True 行為 | 描述 |
---|---|
自動調整大小是一項執行階段功能。 | 這意味著它永遠不會增加或縮小控制項的大小,因此不會產生進一步的影響。 |
如果控制項的大小發生了變更,則其 Location 屬性的值會始終保持不變。 | 當控制項內的內容增加而導致其變大時,該控制項會向右和向下擴充尺寸。 控制項不會向左擴充尺寸。 |
當 AutoSize 為 true 時,會遵循 Dock 和 Anchor 屬性。 |
控制項的 Location 屬性的值會調整為正確的值。 注意Label 控制項是此規則的例外狀況。 當您將停駐的 Label 控制項的 AutoSize 屬性的值設為 true 時,Label 控制項不會拉伸縮放。 |
會一律遵循控制項的 MaximumSize 和 MinimumSize 屬性 (無論其 AutoSize 屬性的值為何)。 | 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 屬性。 支援的 - AutoSize 屬性。 |
Button CheckedListBox FlowLayoutPanel Form GroupBox Panel TableLayoutPanel |
- 無任何 AutoSizeMode 屬性。 |
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 Forms 設計工具會隱藏 Form 類別的 AutoSize 屬性。 在設計時,表單的行為就像將 AutoSize 屬性設為 false
一樣 (無論其實際設定為何)。 在執行階段,不會進行任何特殊的調整,AutoSize 屬性會按照屬性設定的指定來套用。