语言更改时调整表单大小
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);
类似的东西。我没有测试过。
【讨论】:
以上是关于语言更改时调整表单大小的主要内容,如果未能解决你的问题,请参考以下文章
django aws s3 图像在上传和访问各种调整大小的图像时调整大小