标签从右向左增长

我的表单上有一个标签,位于表单右侧。 这个标签加载一个dynamic文本。

有时它加载的文本太长,文本跨越表单的边界,也就是说有些文本不在表单中。

我想让标签从右向左增长,而不是从左到右。 我如何做到这一点?

我通过设置标签解决了这个问题

AutoSize属性为false

TextAlignMiddleRight

一个右边

请注意,标签大小本身并不随文本增长,但您可以通过给它足够的宽度来适应内容来处理它。 视觉效果是一样的。

我的问题在于,我的标签在一个面板中,而我所做的任何事情都不起作用。

我所做的是将标签放在TableLayoutPanel控件中,并将TableLayoutPanel的RightToLeft属性设置为True ; 这个伎俩。

你不能让它“从右向左增长”,但是你可以指定它的Left属性,这样它就不会出现在窗体之外:

 label1.Text = "some dynamic text here..."; if (label1.Right > this.Width) label1.Left = this.Width - label1.Width; 

如果devise允许,也可以将其高度加倍,以便文本将跨越两行。

您可以使用TableLayoutPanel或其他兼容容器控件,而是将标签的RightToLeft属性设置为Dock =“Right”作为标签

对于一些string格式,设置RightToLeft属性并不总是给出预期的结果,string被修改改变了字的顺序。

你可以写它:

  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; } }