Вы также можете попробовать этот подход сохранить ключи и значения в другом списке, а затем использовать метод dict
data=['test1', '1', 'test2', '2', 'test3', '3', 'test4', '4']
keys=[]
values=[]
for i,j in enumerate(data):
if i%2==0:
keys.append(j)
else:
values.append(j)
print(dict(zip(keys,values)))
:
{'test3': '3', 'test1': '1', 'test2': '2', 'test4': '4'}
Можно использовать панели с автоматическим расположением, такие как FlowLayoutPanel и TableLayoutPanel.
К сожалению, существует только 2 панели с автоматическим расположением из поля, но можно создать панель пользовательского макета.
Я рекомендовал бы Вам прочитать следующие статьи:
Как к: создайте Windows Form Изменяемого размера для ввода данных
Пошаговая демонстрация: создание Windows Form Изменяемого размера для ввода данных
Другая опция использовала бы WPF (Windows Presentation Presentation).
WPF является идеальной парой для Вашей задачи.
Средства управления WPF могут быть размещены в приложениях WinForms, таким образом, Вы не должны переключаться на него полностью.
@Sam я знаю этот вопрос, был о Windows Forms, но необходимо определенно начать смотреть на WPF. Этот вид сценария действительно легок в WPF с DataTemplates и TemplateSelectors.
Под чем Вы подразумеваете “динамичный”? Новый, фиксированный набор средств управления для каждой строки данных в наборе данных? Затем используйте a UserControl
это содержит Ваши средства управления.
Или Вы подразумеваете, что, в зависимости от Вашего формата данных, хотите предоставить пользователю специализированный набор средств управления, скажем, один TextBox
для каждого столбца?
Да, я нашел вручную, что расположение управляет (постепенное увеличение их свойства Top высотой управления плюс поле, когда я иду) быть довольно эффективным.
Другой подход должен поместить Ваши средства управления в Панели с набором Прикрепления к Вершине, так, чтобы каждая последовательная панель прикрепилась против той выше. Затем можно переключить видимость отдельных панелей, и средства управления внизу накинутся для заполнения свободного места. Знайте, что это может быть немного непредсказуемо: показ скрытой панели, это прикрепляется, может иногда менять свое положение относительно других прикрепленных средств управления.
Хорошо это - способ, которым мы делаем его прямо сейчас на проекте. но это только полезно для простых случаев. Я предлагаю, чтобы Вы использовали своего рода шаблон для более сложных случаев.
Например, я использовал Отражение для отображения определенного типа управления к определенному свойству на моих объектах области на более старом проекте.
Вы могли попытаться генерировать код из шаблонов с помощью t4, см. Шаблоны T4 в Visual Studio для Скринкаста Генерации кода для простого примера. Можно применить это к WinForms.
Также DevExperience имеет хорошую (дорогую) платформу, посмотрите DevExpress eXpressApp Framework™.