Шаблон проектирования для одной формы приложения Windows Forms - PullRequest
2 голосов
/ 02 мая 2009

Мое приложение расширяется, но требования диктуют, что всегда должно быть открыто только одно окно, подумайте о Nodepad, где есть меню, где каждый пункт меню имеет разные функции, но только одно окно всегда открыто, а не Excel, где у пользователя может быть открыто несколько окон одновременно.

Итак, с точки зрения форм Windows, я думал о размещении формы в основной форме. Затем я мог бы загрузить необходимую встроенную форму в зависимости от выбора пользовательского меню. ИЛИ Я мог бы добавлять элементы управления в основную форму (и их события динамически в зависимости от выбора пользовательского меню). Я бы использовал для этого класс докладчика.

Это всего лишь два решения, которые я бы использовал. Ребята, есть ли у вас какие-либо советы / опыт, как это сделать лучше?

Теперь я понимаю, что мне придется переписывать части своего приложения, но давайте представим, что я начинаю с нуля.

Ответы [ 3 ]

3 голосов
/ 03 мая 2009

Не вставляйте Формы, это не то, для чего Формы. И это не обязательно.

Поместите пользовательский интерфейс ваших модулей / разделов в UserControls. Это делает его красивым и модульным, и вы оставляете ваши параметры открытыми: эти UserControls могут быть непосредственно встроены (по 1 за раз) в MainForm или в MDI ChildWindows или в TabPages или ...

Используйте базовый пользовательский контроль (визуальное наследование) и / или интерфейс для реализации общих функций.

0 голосов
/ 02 мая 2009

Если бы ваши требования были «одно окно - несколько функциональных возможностей», я бы, конечно, выбрал составляемый стиль разработки интерфейса. Smart Client Software Factory является хорошей отправной точкой, имхо.

0 голосов
/ 02 мая 2009

Звучит так, как вы описываете: Приложения для работы с несколькими документами (MDI) . К счастью, в WinForms есть отличная поддержка MDI. Вот краткое вступление .

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