FlowLayoutPanel переменной высоты с закрепленной справа статической панелью

Внимательно посмотрите на этот рисунок

У меня есть верхняя панель, которая прикреплена к Top моей формы (AutoSize == True, AutoSizeMode == GrowOnly). Внутри у меня есть FlowLayoutPanel, пристыкованная к Fill (AutoSize == True, AutoSizeMode == GrowOnly), и простая Статическая панель, пристыкованная к Right (AutoSize == False). Статическая панель имеет фиксированную ширину, но ее высоту можно растягивать. FlowLayoutPanel содержит несколько дочерних элементов, которые выровнены по правому краю.

Я хочу, чтобы это было так, когда пользователь изменяет размер формы так, чтобы все дочерние элементы FlowLayout не могли поместиться на той же «линии», что и FlowLayoutPanel, Top Panel и Статическая панель все увеличиваются в высоту, чтобы соответствовать обрезанным дочерним элементам второй «линии» и, возможно, третьей, четвертой и так далее.

В его нынешнем виде (в этом примере) потенциальные перекрывающиеся дочерние элементы отбрасываются до второй «линии», но ни одна из высот не растягивается, чтобы показать их. Я всячески возился с различными параметрами стыковки и автоматического изменения размера на этих различных панелях.

Я подумал, что это не будет слишком сложно, но я не могу заставить его работать, используя только функции, доступные во время разработки. Может, это невозможно или я что-то упускаю. Спасибо!


person Frank Weindel    schedule 23.01.2013    source источник


Ответы (2)


Я пробовал несколько вещей. Вот что у меня сработало:

Замените верхнюю панель на _1 _ (_ 2_, ColumnCount=2 RowCount=1, Autosize = True, AutosizeMode = GrowAndShrink) и задайте для правого столбца фиксированную ширину x пикселей (левый столбец изменится на 100%).

В левом столбце укажите свой FlowLayoutPanel (Autosize = True, AutosizeMode = GrowAndShrink, Anchor= Top, Left, Right)

В правом столбце введите Panel (Autosize = False, Anchor= Top, Bottom, Left, Right)

Вот как это выглядит: Blue = FlowLayoutPanel, Green = Panel

Перед изменением размера
введите описание изображения здесьПосле изменения размера
 введите описание изображения здесь

Не забудьте установить минимальную ширину для вашей формы. Или это может выглядеть так
введите описание изображения здесь

person Guish    schedule 20.01.2014

Я попробовал это на своем компьютере и увидел вашу проблему.

Причина этого в том, что вы должны быть осторожны при смешивании свойств AutoSize и Dock вложенных элементов управления.

Для Flowlayoutpanel.Dock задано значение «Заливка», поэтому он не может увеличиваться в размере в зависимости от элементов управления внутри него. Это будет просто зависеть от размера его родителя. Установите для FOP значение Dock = None и вместо этого используйте привязку - Top, Left, Right.

Я смог заставить это работать на моем компьютере. Дай мне знать, если тебе понадобится помощь.

person Jan Navarro    schedule 20.01.2014
comment
FOP означает? - person Jaydeep Karena; 10.10.2018
comment
@Jaydeep Наверное, тогда я имел в виду flowlayoutpanel - person Jan Navarro; 11.10.2018