Ярлык растет справа налево
У меня есть ярлык в моей форме, который находится справа от формы. Эта метка загружает динамический текст.
Иногда текст, который он загружает, слишком длинный, и текст пересекает границу формы, то есть какой-то текст выходит из формы.
Я хочу, чтобы метка увеличивалась справа налево, а не слева направо. Как достичь этого?
Ответы
Ответ 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;
}
}