FlowLayoutPanel не показывает все содержимое? - PullRequest
1 голос
/ 26 января 2012

Очень странная ситуация с FlowLayoutPanel ...

Я динамически добавлял пользовательские элементы управления на свою панель.Этот пользовательский элемент управления имеет высоту 105. Если у меня есть FlowLayoutPanelwidth, чтобы показать только 1 «столбец» элементов управления, он будет отображать только 296 из них.Остальные элементы управления выделены серым цветом в нижней части панели управления.Если я увеличу flp, чтобы разрешить 2 «столбца» элементов управления, я смогу увидеть 592 из них, а оставшаяся часть выделена серым цветом внизу.Я вошел и изменил размеры пользовательского элемента управления, чтобы сделать его короче по высоте, что работает в некоторых отношениях (т. Е. Работает, когда у меня есть два столбца, а не только 1), и я могу продолжить этот обходной путь.

Итак, я предполагаю, что мой вопрос таков: почему FlowLayoutPanel ведет себя таким образом?Кажется (исходя из того, что я видел), существует ограничение на количество данных, которые FLP будет показывать одновременно.

1 Ответ

2 голосов
/ 26 января 2012

Ваш комментарий напомнил мне, что когда вы добавляете много элементов управления в любой контейнер, это хорошая идея:

YourPanel.SuspendLayout();

// populate panel with controls

YourPanel.ResumeLayout(false);

Это фактически останавливает контейнер (панель) от повторного рендеринга каждый раз, когда вы добавляете элемент управления, пока не закончите добавлять элементы управления. По крайней мере, создание вашей панели будет более плавным и быстрым. Не уверен, что это может решить вашу проблему или избежать необходимости взлома с помощью PerformLayout.

Если вы посмотрите на файл конструктора вашей формы, то увидите это в действии в функции InitializeComponent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...