语言更改时调整表单大小

时间:2011-06-23 20:49:40

标签: c# winforms resize

C#WinForms:想象一下,红色和黄色面板中有一堆控件。实际上他们不需要是面板。无论你建议什么都好。 功能要求:当它是英语时,调整大小是好的,因为表格看起来就像我在设计师中设计的那样。当语言发生变化时会出现问题,因为标签在翻译模式下会得到一个非常长的文本,而它只是不适合黄色。 所以:(1)我想要一些UI设计理念,当标签需要更多空间时,它会自动调整大小并调整黄色区域并将红色区域向右推,同时表格也会调整大小以显示所有内容。 2)如果我调整表单大小,我希望红色区域增长,所以我可以通过将红色区域向右锚定来完成此操作...但是如果我调整窗体大小,我不希望黄色区域调整大小。我只希望它内部的内容需要更多空间时调整大小。 3)我可能错了,我使用了一个TableLayout,其中有两列用于红色和黄色区域,并将列放在AutoSize模式下,但它没有解决问题....

你有什么建议吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是创建一个继承System.Forms.Controls.Button或Label类的类。覆盖TextChanged事件,然后在Paint函数中,使用MeasureFont测量文本的大小并按比例更改按钮的大小。所以像这样:

public class MyButton : Button 
{
    protected override void OnPaint(PaintEventArgs pe)
    {
        Graphics g = pe.Graphics;

        SizeF stringSize = g.MeasureFont(this.Text, this.Font);

        this.Resize(SizeF.Width + 10, SizeF.Height + 10);
     }
}

这些方面的东西。我没有测试过这个。