【发布时间】:2010-07-06 14:24:47
【问题描述】:
我有 15 到 20 个标签,它们的文本大小可变,文本框排列在表单中。文本框排列在标签旁边。表单的字体和颜色以及表单控件可以由用户在运行时进行配置。当我右对齐标签并将自动增长属性设置为 true 时,每当字体样式发生变化(比如从 Arial 到 Georgia)时,右对齐的标签不再右对齐。
我需要一个标签解决方案(用于 winforms),以便在字体大小更改时自动向左增长。
【问题讨论】:
我有 15 到 20 个标签,它们的文本大小可变,文本框排列在表单中。文本框排列在标签旁边。表单的字体和颜色以及表单控件可以由用户在运行时进行配置。当我右对齐标签并将自动增长属性设置为 true 时,每当字体样式发生变化(比如从 Arial 到 Georgia)时,右对齐的标签不再右对齐。
我需要一个标签解决方案(用于 winforms),以便在字体大小更改时自动向左增长。
【问题讨论】:
将您的标签属性设置为以下;
AutoSize = false;
TextAlign = TopRight (or anything to right)
然后手动将标签大小调整到最大区域以适应最长的文本。这对我有用。
【讨论】:
将锚点设置为“右”而不是“左”(您可能还会有“上”,在这种情况下它是“右上”而不是“左上”),它应该在右(左)方向增长我相信。我已经有一段时间没有这样做了,所以请尝试一下,让我知道结果如何。
【讨论】:
您可能可以使用TableLayoutPanel。
【讨论】:
您也可以使用RightToLeft label property 而不是修改 Anchor。
【讨论】:
我遇到了同样的问题。我的解决方法是创建一个简单的函数来移动标签,我在任何更改标签大小的事件或代码之后调用它。
输入要向左增长的标签名称,以及标签右端的X坐标。然后在对标签进行任何更改后调用此函数。
private void repositionLabel(Label lab, int endPoint)
{
lab.Left = endPoint - lab.Width;
}
例如,您有一个名为 myLabel 的标签位于 (75,75),它当前的宽度为 25,您总是希望它在 (100,75) 处结束。那么当这种情况发生时:
myLabel.Text = "blah blah blah blah blah blah";
然后你跟随文本变化:
repostitionLabel(myLable, 100);
这将使它看起来像向左扩展的标签。
【讨论】: