2010-10-31 2 views
3

Скажем, я начал кратные WinForms из Program.cs сСпособы выхода из приложения после запуска нескольких winforms?

Form1 form1 = new Form1(); 
form1.show(); 
Form2 form2 = new Form2(); 
form2.show(); 
Application.Run(); 

Как бросить курить приложение, когда все формы закрыты пользователем?

Я могу, конечно, поместить Application.Exit() в событие FormClosed, но это не очень элегантно, я думаю. Есть ли другие способы?

Обновление: Я имею в виду, что это не изящно, чтобы жестко кодировать каждый FormClosed каждый, я должен добавить новую форму. Итак, есть способ, которым я могу ЗАКЛЮЧИТЬ ЛЮБЫЕ события FormClosed глобально, чтобы я мог поддерживать код в центральном обработчике событий, не выполняя PLUMBING BY HAND.

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

+0

Что такое «неэлегантно» о выходе из приложения, когда форма закрыта, если это то, что вы хотите? –

+0

См. Обновление выше – user310291

+0

Наследовать от 'ApplicationContext' - см. [Здесь] (http://stackoverflow.com/a/13406508/111794). –

ответ

4

Application.Exit() требуется в этом случае. Другой подход заключается в том, что вы обозначаете одну из форм как «главное окно». И приложение будет прекращено, когда он закрыт:

Application.Run(form1); 

Каркас .NET также поддерживает «при закрытии последнего окна» режим отключения. Проверьте мой код в this thread за требуемый код.

+0

Я уже упоминал Application.Exit не требуется. Моя проблема заключается в том, как можно связать событие FormClosed глобально, чтобы у меня не было хлопот по обслуживанию, выполняя сантехнику вручную каждый раз, когда я добавлю новый класс формы. – user310291

+0

Я прочитал вашу другую тему и узнал о ShutdownMode.AfterAllFormsClose, который должен решить мою проблему. – user310291

1

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

1

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

Смежные вопросы