根据标签大小调整面板大小

时间:2011-01-19 19:38:12

标签: c# winforms

我有一个带有标签的面板。

有时,标签很长,面板必须调整大小。

我已将两个控件的Autosize属性设置为true,但是......

你能帮我吗?

3 个答案:

答案 0 :(得分:2)

您还必须为包含容器设置AutoSizetrue,直到窗口。

我这样做的最后一次尝试涉及使用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();
    }