WinForms: выравнивание по правому краю, авторазмер - PullRequest
5 голосов
/ 21 октября 2010

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

Проблема очень проста:

У меня есть выровненный по правому краю ярлык с автоматическим размером, установленным в true. Ожидаемое поведение заключается в том, что при увеличении текста правильная координата остается неизменной. Но это не то, что происходит. Левая координата - та, которая остается неизменной.

Мое приложение немного маленькое, поэтому я не хочу начинать размещать элементы управления на панелях и т. Д. Итак, я попробовал все решения, которые включали ТОЛЬКО свойства меток. Единственное, что сработало, это установить для autosize значение false и увеличить его. (Принято решение вопроса № 1692383). Но это действительно безобразно !!! Я бы очень хотел этого избежать.

Любое другое возможное решение ??

Заранее спасибо!

1 Ответ

7 голосов
/ 21 октября 2010

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

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

private readonly int _rightMargin;

public Form1()
{
    InitializeComponent();

    _rightMargin = label1.Parent.Width - label1.Right;
}

private void label1_SizeChanged(object sender, EventArgs e)
{
    label1.Location = new Point(label1.Parent.Width - _rightMargin - label1.Width, label1.Top);
}
...