标签从右向左增长

时间:2011-04-10 13:48:22

标签: c# .net winforms label

我的表格上有一个标签,位于表格右侧。此标签会加载动态文本。

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

我想让标签从右到左而不是从左到右。我如何实现这一目标?

6 个答案:

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