В нашем проекте SharpWired мы пытаемся создать компонент загрузки, аналогичный окнам загрузки в Firefox или Safari. То есть один единственный список загрузок сверху вниз, который представляет собой настраиваемые элементы управления, содержащие индикаторы выполнения, кнопки и многое другое.
Требования заключаются в том, что должен быть один единственный список с одним элементом в каждой строке. Каждый элемент должен быть настраиваемым элементом управления. Размер всего списка должен быть динамически изменяемым, чтобы при его увеличении / сокращении при необходимости добавлялась полоса прокрутки, а при ее уменьшении / расширении размер настраиваемых элементов управления должен изменяться в соответствии с шириной списка.
Мы пробовали использовать FlowLayoutPanel, но не смогли изменить размер так, как нам хотелось бы. Желательно установить привязку пользовательских элементов управления только к левому и правому. Мы также думали об использовании TableLayoutPanel, но обнаружили, что динамическое добавление строк пока слишком дорого обходится.
Это должно быть довольно распространенный вариант использования, и мне кажется немного странным, что FlowLayoutPanel не имеет интуитивно понятного способа сделать это. Кто-нибудь делал что-то подобное или есть советы или уловки, которые помогут нам начать работу?
Ура!
/Адам





.NET 3.5 SP1 представил элемент управления Windows Forms DataRepeater, который звучит так, как будто он будет делать то, что вы хотите. Привяжите его к списку «загрузок» (или к тому, что представляет ваш список) и настройте каждую панель элементов, включив в нее необходимые элементы управления.
@ Адам нет, это просто пространство имен VisualBasic. Вы можете использовать его на всех без исключения языках .NET, и он является частью платформы, начиная с .NET 3.5 SP1.
Насколько мне известно, вы можете просто сослаться на сборку в своем решении и использовать методы в ней как обычно. Скомпилированные сборки .Net могут беспрепятственно взаимодействовать друг с другом. Конечно, у меня нет особого опыта в этой сборке, и я не могу гарантировать ничего, что только что сказал в данном случае. :)
Если вы не хотите использовать привязку данных (через элемент управления DataRepeater, как упоминалось выше), вы можете использовать обычный элемент управления Panel и установить для его свойства AutoScroll значение true (чтобы включить полосы прокрутки).
Затем вы можете вручную добавить свои настраиваемые элементы управления и установить для свойства Dock значение Top.
Вот чем мы занимаемся. Решение для привязки данных - это для нас слишком много накладных расходов.
Этот элемент управления находится в VisualBasic Power Pack. Как мне использовать его на C#?