Ярлык растет справа налево


У меня есть метка на моей форме, которая находится справа от формы. Эта метка загружает динамический текст.

иногда текст, который он загружает, слишком длинный, и текст пересекает границу формы, то есть часть текста находится вне формы.

Я хочу, чтобы метка расти справа налево, а не слева направо. Как мне этого добиться?

5 53

5 ответов:

Я решил это, установив метку

Авторазмер свойство ложные,

TextAlign до MiddleRight,

an якорь до право.

обратите внимание, что размер этикетки не растет с текстом, но вы можете справиться с этим, давая ему достаточную ширину, чтобы соответствовать содержанию. Визуальный эффект тот же.

моя проблема здесь заключалась в том, что мой ярлык был в панели, и все, что я делал, не работало.

то, что я сделал, это поместить ярлык в TableLayoutPanel управление и установить TableLayoutPanel в RightToLeft свойство True; этот же трюк.

вы не можете сделать его "расти справа налево", но вы можете назначить его Left свойство, чтобы оно не выходило из формы:

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

Если дизайн позволяет, вы также можете удвоить его высоту, так что текст будет охватывать две строки.

вы можете использовать TableLayoutPanel или другой совместимый элемент управления контейнером, но вместо этого установите свойство RightToLeft для контейнера set Dock= "Right" для метки

установка свойства RightToLeft не всегда дает ожидаемые результаты, так как для некоторых форматов строк строка изменяется, изменяя порядок слов.

вы можете написать это:

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