Изменение размера ярлыков в Winforms влево - PullRequest
2 голосов
/ 06 июля 2010

У меня от 15 до 20 этикеток с переменным размером текста и текстовыми полями, расположенными в формах. Текстовые поля расположены рядом с метками. Шрифт и цвет формы и, следовательно, элементы управления формой могут быть настроены пользователем во время выполнения. Когда я выравниваю метки по правому краю и устанавливаю свойство auto grow на true, и когда стиль шрифта изменяется (скажем, от Arial до Georgia), метки по правому краю больше не выравниваются по правому краю.

Мне нужно решение для ярлыков (для winforms), чтобы оно автоматически увеличивалось влево при изменении размера шрифта.

Ответы [ 5 ]

5 голосов
/ 31 декабря 2010

Установите свойства ярлыка следующим образом:

AutoSize = false;
TextAlign = TopRight (or anything to right)

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

3 голосов
/ 06 июля 2010

Установите якорь на «Right», а не «Left» (у вас, вероятно, также будет «Top», в этом случае это «Right Top», а не «Left Top»), он должен расти в правом (левом) направленииЯ верю.Прошло какое-то время с тех пор, как я это сделал, так что попробуйте и дайте мне знать, как это происходит.

1 голос
/ 08 июля 2010

Вы также можете использовать Свойство метки RightToLeft вместо изменения Anchor.

1 голос
/ 06 июля 2010

Возможно, вы могли бы использовать TableLayoutPanel.

0 голосов
/ 07 января 2011

У меня была такая же проблема. Я решил создать простую функцию для перемещения метки, которую я вызывал после любого события или кода, которые меняли размер метки.

Введите название метки, которую вы хотите увеличить влево, и координату X правого конца метки. Затем вы вызываете эту функцию после любых изменений метки.

private void repositionLabel(Label lab, int endPoint)
        {
            lab.Left = endPoint - lab.Width; 
        }

Например, у вас есть метка с именем myLabel, расположенная в (75,75), в настоящее время она имеет ширину 25, и вы всегда хотите, чтобы она заканчивалась в (100,75). Затем, когда это произойдет:

myLabel.Text = "blah blah blah blah blah blah";

затем вы следуете за изменением текста:

repostitionLabel(myLable, 100);

Это будет выглядеть как ярлык, развернутый влево.

...