我的表格上有一个标签,位于表格右侧。此标签会加载动态文本。
有时它加载的文本太长,文本越过表单的边框,也就是说某些文本不在表单中。
我想让标签从右到左而不是从左到右。我如何实现这一目标?
答案 0 :(得分:71)
我通过设置标签
解决了这个问题AutoSize 属性为 false ,
TextAlign 指向 MiddleRight ,
锚点到右侧。
请注意,标签大小本身并没有随文本增长,但您可以通过为其提供足够的宽度来处理它。视觉效果是一样的。
答案 1 :(得分:22)
我的问题是我的标签是在一个小组中,我做的任何事情都没有用。
我所做的是将标签放在TableLayoutPanel
控件中,并将TableLayoutPanel的RightToLeft
属性设置为True
;这就行了。
答案 2 :(得分:6)
你无法让它“从右向左成长”,但你可以指定它的Left
属性,这样它就不会出现在表格中:
label1.Text = "some dynamic text here...";
if (label1.Right > this.Width)
label1.Left = this.Width - label1.Width;
如果设计允许,你也可以加倍它的高度,使文字跨越两行。
答案 3 :(得分:3)
您可以使用TableLayoutPanel或其他兼容的容器控件,而是为容器设置RightToLeft属性设置Dock =“Right”作为标签
设置RightToLeft属性并不总是给出预期的结果,因为某些字符串格式的字符串被修改,改变了单词的顺序。
答案 4 :(得分:1)
你可以写下来:
public enum Leftorright { left,right}
private Leftorright _LeftToRight = Leftorright.left;
public Leftorright LeftToRight
{
get { return _LeftToRight; }
set { _LeftToRight = value; }
}
protected override void OnTextChanged(EventArgs e)
{
int oldWidth;
oldWidth = this.Width;
base.OnTextChanged(e);
if (LeftToRight == Leftorright.right && this.Width != oldWidth)
{
this.Left = this.Left - this.Width + oldWidth;
}
}
答案 5 :(得分:1)
using System.Windows.Forms;
/// <summary>
/// The position of myLabel to the left of the otherControl component when entering
/// text "s".
/// You must set myLabel.AutoSize = true
/// </summary>
/// <param name="s">text</param>
void WriteText(string s)
{
int len = TextRenderer.MeasureText ( s, myLabel.Font ).Width;
myLabel.Left = otherControl.Left - 5 - len;
myLabel.Text = s;
}