Дизайн приложения с несколькими формами в одной основной форме - PullRequest
1 голос
/ 16 июня 2011

Я хочу создать приложение, которое имеет одну основную форму с одной функциональностью = Добавить новую форму.

Я не знаю, как будут создаваться формы, они создаются пользователем динамически (методы AddForm изосновная форма).

Все подвиды одинаковы, но некоторые из них получают параметры разности (это может быть в ctor или позже).

Я хочу иметь возможность закрыть всеформы, когда я закрываю основную форму.

Перед тем, как будет отображена новая форма, я хочу отобразить форму настройки (для получения параметров формы), возможно, с помощью метода ShowDialog и выполнить проверку в форме и только если форма проверяетсяновая форма будет отображаться, если нет (или если пользователь отменяет), форма будет удалена.

Я знаю о MDI, но я действительно предпочитаю другой способ

Есть идеи?

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Закрытие всех форм, когда основная форма закрыта, довольно просто, вы просто передаете ссылку на главную форму в методе Show () дочерних форм; например если вы показываете ребенка из основного, вы делаете:

child.Show (это);

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

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

0 голосов
/ 16 июня 2011

Идея проста - создать приложение, которое открывает основную форму в начале, а затем открывает другие формы, если необходимо, если вы закрываете основную форму, остальные формы также закрываются. Как в GIMP.

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