2011-01-19 228 views
0

我在裏面有一個帶有標籤的面板。根據標籤尺寸調整面板的尺寸

有時,標籤很長,面板必須調整大小。

我已經autoSize屬性設置爲true兩個控件,但是....

你能幫助我嗎?

+0

你確定沒有第三個控件忘了爲(嵌套面板)設置AutoSize嗎? – Justin 2011-01-19 19:44:20

+0

另外,確保標籤的Dock設置爲None。 – Justin 2011-01-19 19:45:27

回答

2

您還必須設置AutoSizetrue以便容納容器,直至窗口。

我這樣做涉及相當多的重新設計與TableLayoutPanel中,自碼頭/錨和自動調整大小等形式的最後一次嘗試似乎並不拌勻。

1

我已經autoSize屬性設置爲true兩個控件,但是....

我可以從「而是」你問了出來。這是標籤的AutoEllipsis屬性。將其設置爲true並設置MaximumSize屬性,以使標籤不能比其容器大。用戶會看到...所以她會意識到文本被截斷。她將鼠標懸停在標籤上以獲取全文的工具提示。

讓一切增長,以適應一個標籤是顯着不切實際的。您通常可以操縱MaximumSize,讓它垂直增長一段時間,直到一點。

1

我遇到了類似的問題,這裏是你的代碼。假設您的面板固定在表單上(頂部,左側,底部,右側),則表單需要調整大小,而不是面板。

public static void FitPanel(Panel pnl) 
    { 
     int maxright = 0; 
     int maxbottom = 0; 
     foreach (Control ctl in pnl.Controls) 
     { 
      maxright = (ctl.Right > maxright ? ctl.Right : maxright); 
      maxbottom = (ctl.Bottom > maxbottom ? ctl.Bottom : maxbottom); 
     } 
     int deltabottom = pnl.Bottom - (pnl.Top + maxbottom); 
     int deltaright = pnl.Right - (pnl.Left + maxright); 
     Form frm = pnl.FindForm(); 
     frm.SuspendLayout(); 
     frm.Height = frm.Height - deltabottom; 
     frm.Width = frm.Width - deltaright; 
     frm.ResumeLayout(); 
    }