Какой шаблон проектирования для управления окнами? - PullRequest
1 голос
/ 11 мая 2010

Я использую .NET 2.0 & C # для разработки приложения WinForm Mdi. У него будет главное окно и много окон mdi. Я думаю, что я должен использовать какой шаблон проектирования для управления окнами MDI. Поскольку я хочу только один экземпляр для каждого окна, если окно существует, я покажу его сверху, а в противном случае я создам и покажу его.

Примечание: окно mdi открывается из меню главного окна или открывается из другого окна mdi. Пример очень хороший.

Обновление: Состояние меню зависит от состояния окна mdi. Пример: если открыто окно «А» -> меню «А» -> отключено. Когда окно 'A' закрыто -> я обновляю статус меню 'A' на Включено.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 11 мая 2010

Я бы предложил хорошее прочтение страницы Мартина Фаулера по шаблонам графического интерфейса.

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

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

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

1 голос
/ 11 мая 2010

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

Простое предложение, основанное на паттерне GoF, будет следующим:

  • Используйте шаблон Command для управления вашим событие щелчка меню
  • Используйте шаблон Factory для создания вашего окна. Вы можете настроить свой завод так что он создает только один Экземпляр окна, используя подход из шаблона Singleton
  • Используйте шаблон Subject-Observer для состояния меню. Детское окно MDI будет предметом и вам понадобится структурировать свой код так, чтобы вы может встроенная логика наблюдателя в вашем Контроллер меню.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...