Динамический нисходящий список элементов управления в WindowsForms и C #?
-
09-06-2019 - |
Вопрос
В нашем проекте, Остроконечный, мы пытаемся создать компонент загрузки, аналогичный окнам загрузки в Firefox или Safari.То есть, один-единственный нисходящий список загрузок, которые представляют собой пользовательские элементы управления, содержащие индикаторы выполнения, кнопки и тому подобное.
Требования заключаются в том, что должен быть один-единственный список с одним элементом в каждой строке.Каждый элемент должен быть пользовательским элементом управления.Весь список должен иметь динамически изменяемый размер, так что, когда вы делаете его длиннее / короче, список добавляет полосу прокрутки, когда это необходимо, а когда вы делаете его тоньше / шире, пользовательские элементы управления должны изменять размер по ширине списка.
Мы пробовали использовать FlowLayoutPanel
но нам не удалось добиться того, чтобы изменение размера работало так, как мы хотим.Предпочтительно, чтобы нам нужно было только установить привязку пользовательских элементов управления влево и вправо.Мы также подумывали об использовании TableLayoutPanel
но пока обнаружил, что динамическое добавление строк требует слишком больших накладных расходов.
Должно быть, это довольно распространенный вариант использования, и мне кажется немного странным, что FlowLayoutPanel
у него нет интуитивного способа сделать это. Кто-нибудь делал что-то подобное или у вас есть советы или хитрости, чтобы помочь нам начать работу?
Ваше здоровье!
/Адам
Решение
Если вы не хотите использовать привязку данных (через DataRepeater
управления, как упоминалось выше), вы могли бы использовать обычный Panel
контролировать и устанавливать его AutoScroll
присвоите свойству значение true (для включения полос прокрутки).
Затем вы могли бы вручную добавить свои пользовательские элементы управления и установить Dock
свойство каждого из них Top
.
Другие советы
.NET 3.5 с пакетом обновления 1 представил Средство обработки данных Элемент управления Windows Forms, который звучит так, как будто он будет делать то, что вы хотите.Привяжите его к списку "загрузок" (или к тому, что представляет ваш список) и настройте каждую панель элементов так, чтобы она включала необходимые вам элементы управления.