2011-01-19 234 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(); 
    }