2015-08-03 1 views
1

Вот панель до программной вставки:Программным добавлены пункты в FlowLayoutPanel не выровнены как и во время разработки

The labels at runtime before programmatic add

И после того, как:

The labels after programmatic insertion

Я добавили другие строки, копируя стиль стилей отзыва, надеясь, что это проблема с заполнением или полями. К сожалению, это не так. Чтобы уточнить, сама FlowLayoutPanel распространяется на право на хорошее расстояние за то, что новая этикетка должна обязательно, как показано здесь:

Bounds of FlowLayoutPanel

Все остальные Label s являются AutoSize включена.

Вот код для генерации и вставки:

Label newLabel = new Label(); 
newLabel.Name = optionString; 
newLabel.Text = type; 
newLabel.Font = ReviewLabel.Font; // just a random label. only thing that matters is consistent styling. 
newLabel.ForeColor = ReviewLabel.ForeColor; 
newLabel.Margin = ReviewLabel.Margin; 
newLabel.Padding = ReviewLabel.Padding; 

LabelsPanel.Controls.Add(typeLabel); 

optionString является type с пространствами удалены. Значение type - «Условия обслуживания». Спасибо за любую помощь.

Edit: Вот иллюстрирующие сколько места есть, если я определяю Label во время разработки, просто перетащив Label из панели элементов управления на форму и настройку Size и Text свойства.

Design time Terms label

Runtime Terms label

+1

Моя первая догадка что Условия предоставления услуг достаточно широк, что это обертывание вместо того, чтобы остаться на одной линии, в результате чего он стал слишком высоким. Попробуйте установить «тип» на более короткое значение, чтобы увидеть, является ли это переносом слов, вызывая головную боль. Если это проблема, вам может потребоваться программно установить ширину на этикетке, чтобы убедиться, что она не завершена. –

+0

Я создал еще один ярлык во время разработки, который имел одно и то же значение «Text», и оно не обертывало или не вызывало странных проблем. Справа было много места, и это выглядело так, как я ожидал бы, чтобы выстроились вместе с остальными. Я переделаю этот тестовый пример и отредактирую изображение. – Bigsby

ответ

3

Смотрите примечание на Label.AutoSize():

При добавлении в форму с помощью конструктора, то значение по умолчанию верно. При создании экземпляра кода значение по умолчанию равно false.

Таким образом, вы, вероятно, нужно добавить:

newLabel.AutoSize = true; 
+0

Действительно. Я просто попробовал, но для меня это было неинтуитивно. Я все равно помету ваш ответ. – Bigsby

1

Оказывается, что AutoSize на Label управления не установлен в true по умолчанию, когда вы новый один в коде. Настройка, которая решила проблему. В соответствии с тем, как ведут себя логические значения по умолчанию, они отличаются от поведения по умолчанию, которое вы видите при взаимодействии с дизайнером. Это было отключением.

Смежные вопросы