Хорошо; Вот хорошие новости: вам не нужны темы вообще. Здесь у вас есть обычный компонент Windows Forms в форме «форм». Эти формы должны быть активными, чтобы реагировать на события. Вам не нужно создавать темы, чтобы сделать это, однако.
Ключ - статический класс System.Windows.Forms.Application
, который имеет функцию, специально предназначенную для того, что вам нужно.
System.Windows.Forms.Application.Run();
Этот метод позволяет вашим Form
объектам работать, реагируя на события, не позволяя функции, которую он вызывал, продолжать. Он блокируется, позволяя насосу сообщений отвечать до тех пор, пока не будет вызван Application.Exit()
или другие подобные методы.
Что вы хотите сделать в вашем случае, так это создать все ваши формы и вызвать по очереди Show()
для каждой из них ( не ShowDialog()
), а затем, наконец, позвонить Application.Run()
. Это дает вам то, что вы хотите.
Чтобы завершить свою программу, вам нужно, чтобы где-нибудь в ответ на что-то произошло Application.Exit()
в ответ на что-то. У вас есть два варианта, которые будут работать быстро для вас:
- Создайте отдельную «контрольную форму», которая представляет собой простую форму, которая при закрытии вызывает
Application.Exit()
, возможно, после циклического перебора всех ваших форм userManagement и, прежде всего, их закрытия. Вы можете сделать это с событием в событии Form.OnClosing
формы управления, например.
- Добавьте событие к каждому из событий
Form.OnClosing
форм userManagement, которое проверяет, когда закрыто последнее (или, возможно, закрыто ли какое-либо из них?), И, как указано выше, вызывает Application.Exit()
там.
После того, как вы вызовете Application.Exit()
, все открытые формы должны быть снесены (сначала я рекомендую сделать это вручную ...), а затем ваш вызов в главном потоке на Application.Run()
завершится, и ваша программа продолжит работу. .. мы предполагаем, до конца.
<ч />
РЕДАКТИРОВАТЬ: Старый ответ, для потомков ...
Вы создаете новую тему не в том месте.
Не создавать новую тему для второго окна. Вместо этого создайте новый поток для длительной задачи и обязательно установите его в качестве фонового потока, чтобы он не оставался в живых даже при закрытии окон.
В идеале, этот цикл должен быть изящно отменен, но вы, похоже, предлагаете не касаться этого кода ...