Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Свойство AutoSize: false,

TextAlign - MiddleRight,

a Якорь для справа.

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

вы можете записать его:

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