AutoSize 屬性概觀
更新:2007 年 11 月
AutoSize 屬性允許控制項變更大小,如果需要,還可獲得由 PreferredSize 屬性所指定的值。您可藉由設定 AutoSizeMode 屬性,調整特定控制項的調整大小行為。
AutoSize 行為
只有某些控制項支援 AutoSize 屬性。此外,某些支援 AutoSize 屬性的控制項也支援 AutoSizeMode 屬性。
根據特定的控制項型別和 AutoSizeMode 屬性 (如果該屬性存在) 的值,AutoSize 屬性可能會產生不同的行為。下表描述一定是 true 的行為,並為每個行為提供簡短說明:
永遠為 true 的行為 |
描述 |
---|---|
自動調整大小是執行階段功能。 |
這表示它絕對不會放大或縮小控制項,然後並不會有進一步的作用。 |
若控制項變更大小,則 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 控制項的文字,或是容器 (Container) 的子控制項。
下表顯示 AutoSizeMode 設定,以及每個設定所引起的行為描述。
AutoSizeMode 設定 |
Behavior |
---|---|
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 設計工具會遮蔽 Form 類別的 AutoSize 屬性。在設計階段期間,表單會當做 AutoSize 屬性是設定為 false 來運作,而不管它的實際設定。在執行階段中,沒有進行特殊調整,AutoSize 屬性會根據屬性設定的指定而套用。 |