Как я могу добавить кучу меток в форму С#, а затем прокрутить форму по вертикали?

У меня есть форма на С# (WinForm). Это выглядит так:


(ЛОГОТИП)

пустое место для меток, которые я добавляю с помощью кода (я могу разместить 10 меток в этом пространстве)

(кнопка закрытия)


Пустое место может содержать около 10 этикеток.

Я не понимаю, как сделать эту форму прокручиваемой, если я хочу добавить 20 меток? Если я добавлю 20 меток с помощью кода, то 11-я метка будет перекрываться с моей кнопкой закрытия, а 12-я и более метки будут выходить за конец формы.

Как сделать так, чтобы прокручивалась только пустая часть моей формы, где я создаю метки? Я не хочу использовать список.

Спасибо.


person fraXis    schedule 13.12.2010    source источник


Ответы (4)


Поместите все элементы управления внутри панели и используйте управление полосой прокрутки.

Знакомство с полосами прокрутки .NET

person Aseem Gautam    schedule 13.12.2010
comment
Учитывая наличие свойства AutoScroll в большинстве элементов управления контейнерами, предлагаемых WinForms, это, вероятно, худшая из возможных идей, не говоря уже о самой сложной. - person Cody Gray; 13.12.2010
comment
При автоматической прокрутке логотип и кнопка закрытия также будут прокручиваться. Не очень хороший дизайн пользовательского интерфейса по любым стандартам. - person Aseem Gautam; 13.12.2010
comment
Только если вы разместили логотип и кнопку закрытия внутри панели. Вы можете оставить их снаружи, закрепить элемент управления панели между ними и добавить на панель только элементы управления меткой. - person Cody Gray; 13.12.2010
comment
Также с полосами прокрутки вы получаете свободу позиционирования элементов управления. Как tablelayout, так и flowlayouts довольно ограничены и ими трудно управлять, поскольку дизайн становится сложным. - person Aseem Gautam; 13.12.2010

Попробуйте использовать либо TableLayoutPanel или FlowLayoutPanel в качестве контейнера для вашего Label элементы управления.

TableLayoutPanel позволит вам лучше контролировать расположение ваших меток. Как и в таблице HTML, вы указываете точную позицию ячейки (используя координаты строки и столбца) каждого элемента управления.

Напротив, FlowLayoutPanel будет автоматически обрабатывать позиционирование своего содержимого в вертикальной или горизонтальной конфигурации макета. Позиционирование определяется порядком, в котором вы добавляете элементы управления, что позволяет добиться динамического макета с минимальными усилиями.

Любой из них позволит вам добавлять к нему элементы управления метками во время выполнения и соответствующим образом изменять размер. Чтобы панель макета можно было прокручивать, убедитесь, что для свойства AutoScroll установлено значение "True".

person Cody Gray    schedule 13.12.2010

Может быть, FlowLayoutPanel с AutoScroll, установленным в true, и FlowDirection, установленным в TopDown.

person Chad    schedule 13.12.2010

Вы можете использовать FlowLayoutPanel.

Добавьте столько меток, сколько вам нужно, и включите автопрокрутку на FlowLayoutPanel.

person Ralf de Kleine    schedule 13.12.2010