AutoSize 屬性概觀
屬性 AutoSize 可讓控制項視需要變更其大小,以達到 屬性所 PreferredSize 指定的值。 您可以藉由設定 AutoSizeMode
屬性來調整特定控制項的大小調整行為。
自動調整行為
只有某些控制項支援 AutoSize 屬性。 此外,某些支援 屬性的 AutoSize 控制項也支援 AutoSizeMode
屬性。
如果屬性存在,則 AutoSize 屬性會產生一些不同的行為,視特定控制項類型和 屬性的值 AutoSizeMode
而定。 下表描述一律為 true 的行為,並提供每個行為的簡短描述:
一律為 true 行為 | 描述 |
---|---|
自動調整大小是執行時間功能。 | 這表示它永遠不會成長或縮小控制項,然後沒有進一步的效果。 |
如果控制項變更大小,其 Location 屬性的值一律會維持不變。 | 當控制項的內容導致它成長時,控制項會向右和向下成長。 控制項不會向左成長。 |
當 Dock 為 true 時 AutoSize ,會接受 和 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 屬性的控制項
下表列出支援 和 AutoSizeMode
屬性的 AutoSize 控制項。
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 和 AutoSizeMode
屬性的值,在設計階段描述控制項的大小調整行為。
覆寫 屬性, SelectionRules 以判斷指定的控制項是否處於使用者可調整大小的狀態。 在下表中,「cannot」 表示 Moveable 只有 「can」 表示 AllSizeable 和 Moveable 。
自動調整設定 | 設計階段調整大小手勢 |
---|---|
- AutoSize = true - 沒有 AutoSizeMode 屬性。 |
使用者無法在設計階段調整控制項的大小,但下列控制項除外: - TextBox - MaskedTextBox - RichTextBox - TrackBar |
- AutoSize = true - AutoSizeMode = GrowAndShrink |
使用者無法在設計階段調整控制項的大小。 |
- AutoSize = true - AutoSizeMode = GrowOnly |
使用者可以在設計階段調整控制項的大小。 Size設定 屬性時,使用者只能增加控制項的大小。 |
- AutoSize = false 、 或 AutoSize 屬性已隱藏。 |
使用者可以在設計階段調整控制項的大小。 |
注意
為了將生產力最大化,Visual Studio 中的 Windows Forms 設計工具會 AutoSize 遮蔽 類別的 Form 屬性。 在設計階段,無論其實際設定為何,表單的行為就 AutoSize 如同 屬性設定為 false
。 在執行時間,不會建立任何特殊的住宿,而且 AutoSize 屬性會套用為屬性設定所指定。