语言更改时调整表单大小

Posted

技术标签:

【中文标题】语言更改时调整表单大小【英文标题】:Resizing the form when the Language changes 【发布时间】:2011-06-23 20:49:39 【问题描述】:

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

你有什么建议?

【问题讨论】:

改用 WPF。 ;-) 它可以为你处理很多事情。 WPF 不是我的选择。我必须使用 Win32 表单。 一个 TableLayoutPanel 应该可以工作。也许你用错了。 那我做错了什么?我描述了我对表格布局所做的事情。一列是红色,另一列是黄色,将两列都设置为自动调整大小模式。 Size 和 Location 属性已本地化。 【参考方案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);
     

类似的东西。我没有测试过。

【讨论】:

以上是关于语言更改时调整表单大小的主要内容,如果未能解决你的问题,请参考以下文章

ag-grid - 数据更改时调整细节高度

CollectionView 标头不会在自动旋转时调整大小

以编程方式创建的 UILabel 未在旋转时调整大小

django aws s3 图像在上传和访问各种调整大小的图像时调整大小

当边界 UICollectionView 更改时调整单元格大小

jquery - 到达容器时调整元素大小