我有一个带有标签的面板。
有时,标签很长,面板必须调整大小。
我已将两个控件的Autosize属性设置为true,但是......
你能帮我吗?
答案 0 :(得分:2)
您还必须为包含容器设置AutoSize
到true
,直到窗口。
我这样做的最后一次尝试涉及使用TableLayoutPanel等重新设计表单,因为Dock / Anchor和AutoSize似乎不能很好地混合。
答案 1 :(得分:1)
我已将两个控件的Autosize属性设置为true,但是......
我可以从“但是”你要求的东西告诉我。这是Label的AutoEllipsis属性。将其设置为true并设置MaximumSize属性,以使标签不能大于其容器。用户将看到......所以她会意识到文本被截断了。她将鼠标悬停在标签上以获得带有全文的工具提示。
让一切都变得容纳标签是非常不切实际的。您通常可以操纵MaximumSize让它垂直增长一段时间,直到某一点。
答案 2 :(得分:1)
我遇到了类似的问题,这里有一个代码给你。假设您的Panel已锚定到表单(顶部,左侧,底部,右侧),则表单需要调整大小,而不是Panel。
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();
}