Учитывая большое количество объектов, лучше ли создавать для них несколько форм в Designer или использовать код для создания форм? - PullRequest
0 голосов
/ 29 декабря 2010

Если у меня большое количество классов, каждый из которых похож на другой в определенных аспектах (все они имеют общий базовый класс, но каждый работает по-своему), и мне нужно создать формы Windows для каждого, чтобы можно было легко менять их значения через графический интерфейс, каков наилучший подход ?:

  1. Создайте одну подходящую форму для каждого объекта в конструкторе форм VS, или

  2. Использование кода для динамического создания форм во время выполнения.

# 2 имеет для меня наибольшее значение, потому что многие из этих объектов будут иметь очень общие черты формы, в частности кнопки «ОК» и «Отмена». Но одному объекту может потребоваться нарисовать текстовое поле на форме, в то время как другому может потребоваться нарисовать комбинированный список. Не говоря уже о том, что если я хочу поместить значки на кнопки «ОК» и «Отмена», мне придется делать это для каждой копии формы в конструкторе, и это звучит так, как будто она может быстро выйти из-под контроля.

Но рисовать ли формы с помощью кода в здравом уме? Дизайнер форм VS довольно сложен и разработан, чтобы облегчить жизнь. Разумно ли мне подумать об игнорировании его функциональности и окунуться в окопную форму проектирования форм с помощью кода?

Есть ли лучший способ, о котором я не знаю? Или есть примеры автоматизации создания формы на основе свойств существующего объекта?

1 Ответ

1 голос
/ 29 декабря 2010

Метод 2 - это то, что я очень рекомендую. Вы можете воспользоваться всеми преимуществами кодирования, такими как наследование функциональности. Все также видно, а не скрыто в свойствах дизайнера.

Инвестируйте в написание некоторых вспомогательных классов и методов расширения. Все, что вы можете «подтолкнуть», делает это. Адаптация базовой формы к определенному производному классу должна быть ограничена простым добавлением определенных полей в желаемом макете.

У меня есть это до 1 вызова метода на поле (обычно), чтобы создать помеченное поле, привязанное к свойству объектов, удобно расположенное на форме. Будь то текст, дата, числовые значения вверх / вниз, раскрывающийся список (на основе перечисления) и т. Д. Форма заботится о поведении «ОК / Отмена», включая указание объекту сохранить изменения или вернуться в случае отмены формы.

Отличная помощь в том, что я использую очень хороший и полный набор сторонних компонентов, которые включают в себя базовые элементы управления для редактирования, и они помещены в элемент управления «макет», который заботится о позиционировании, группах и т. Д. место и необходимость делать это снова и снова, когда форма меняется. В качестве бонуса элемент управления макетом автоматически масштабируется и корректирует вещи по мере того, как пользователь изменяет размеры формы. Кроме того, формы и элементы управления легко получают любой из визуальных стилей на уровне приложения.

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

Для чего-то большего, чем разовая форма, я бы не использовал метод конструктора форм. Если существует большая иерархия классов, и вы управляете дизайном, тогда код - это путь. Эй, мы - программисты, поэтому возиться с вещами один за другим - не та игра, в которой стоит участвовать.

В первый раз, когда вам нужно будет сделать какие-то масштабные изменения, вы будете впереди.

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