2016-11-01 15 views
-1

У меня есть панель WinForms, которая содержит два элемента, например. этикетки.Выравнивание элементов управления ярлыками по-разному внутри панели в WinForms

Мне нужно выровнять их по горизонтали по-разному, скажем, Label1 должен быть выровнен по центру панели, а Label2 должен быть выровнен с правой стороны панели. Выравнивание должно сохраняться при изменении размера.

Какую панель я должен использовать? Панель? FlowLayoutPanel? Что-нибудь еще? Как установить свойства панели/меток для достижения вышеуказанного расположения?

+1

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

+0

Этикетка может сделать это сама по себе без помощи панели. Используйте свойство Anchor. Используйте Top + Right, чтобы он оставался выровненным вправо. Центр работает немного: используйте AutoSize = False, TextAlign = TopCenter, поместите метку в центр, Anchor = Left + Top + Right. –

+0

@ Hans Passant: он работает почти так, как мне нужно. Ваша инструкция «разместить метку в центре» достаточно, только если изменение размера означает увеличение ширины. Для рабочего решения по уменьшению ширины «положение этикетки в центре» необходимо заменить на «растянуть ширину этикетки до краев закрывающей панели (и да, сделать растяжение правой стороны через метку2)». В последнем случае нужно также соблюдать порядок z, чтобы избежать скрытия метки2. – Feri

ответ

0

Используйте TabelLayoutPanel с двумя колонками. Установите левую привязку ярлыков в верхнюю и нижнюю части и отметьте центр выравнивания текста. Ярлык 2 якорь справа, текст правой центр.

Сделайте TabelLayoutPanel либо док-станцией для заполнения (если это единственный элемент управления на форме), либо установите якорь по бокам, к которым вы хотите развернуть.

Дальнейшее выравнивание метки можно контролировать с помощью положений привязки в пределах родительского контейнера и выравнивания текста.

+0

Редактировать: спасибо, но насколько я вижу это, выровняйте Label1 до центра столбца 1 TableLayoutPanel, а не до центра полной ширины всего TableLayoutPanel. – Feri