Элементы управления динамической формой

Как лучше всего реализовать элементы управления динамической формой с помощью C# 2.0?

Мне нужно предоставить набор элементов управления для каждого объекта данных, поэтому я должен просто сделать это вручную и выложить их, увеличивая верхнее значение, или есть лучший способ?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
0
8 674
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Что вы имеете в виду под «динамическим»? Новый фиксированный набор элементов управления для каждой строки данных в наборе данных? Затем используйте UserControl, который содержит ваши элементы управления.

Или вы имеете в виду, что в зависимости от макета данных вы хотите предоставить пользователю настраиваемый набор элементов управления, скажем, по одному TextBox для каждого столбца?

Да, я обнаружил, что элементы управления компоновкой вручную (увеличивая их свойство Top на высоту элемента управления плюс поле по мере продвижения) достаточно эффективны.

Другой подход - разместить элементы управления на панелях с Dock, установленным на Top, чтобы каждая последующая панель стыковалась с предыдущей. Затем вы можете переключать видимость отдельных панелей, и элементы управления под ними появятся, чтобы заполнить доступное пространство. Имейте в виду, что это может быть немного непредсказуемо: отображение закрепленной скрытой панели иногда может изменить ее положение относительно других закрепленных элементов управления.

Ответ принят как подходящий

Вы можете использовать панели с автоматической компоновкой, такие как FlowLayoutPanel и TableLayoutPanel.

К сожалению, есть только 2 панели с автоматическим макетом из коробки, но вы можете создать собственную панель макета.

Я бы порекомендовал вам прочитать следующие статьи:

Как: создать форму Windows с изменяемым размером для ввода данных

Пошаговое руководство: создание формы Windows с изменяемым размером для ввода данных

Другой вариант - использовать WPF (презентация Windows) .
WPF идеально подходит для вашей задачи. Элементы управления WPF могут размещаться в приложениях WinForms, поэтому вам не нужно полностью переключаться на него.

Что ж, именно так мы и делаем это прямо сейчас над проектом. но это полезно только в простых случаях. Я предлагаю вам использовать какой-то шаблон для более сложных случаев.

Например, я использовал Reflection для сопоставления определенного типа элемента управления с определенным свойством в объектах моего домена в более старом проекте.

Вы можете попробовать сгенерировать код из шаблонов, используя t4, см. Шаблоны T4 в Visual Studio для создания кода. Скринкаст для простого примера. Вы можете применить это к WinForms.

Также у DevExperience есть хорошая (дорогая) структура, см. DevExpress eXpressApp Framework ™.

@Sam Я знаю, что этот вопрос касался Windows Forms, но вам обязательно стоит взглянуть на WPF. Этот вид сценария прост в использовании В самом деле в WPF с DataTemplates и TemplateSelectors.

Другие вопросы по теме