2010-10-31 18 views
3

比方說,我從推出Program.cs的倍數的WinForms與啓動多個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

如果這是您想要發生的情況,表單關閉時如何退出應用程序又是什麼「不雅」? – 2010-10-31 21:10:54

+0

查看上面的更新 – user310291 2010-11-01 04:20:40

+0

從'ApplicationContext'繼承 - 請參見[here](http://stackoverflow.com/a/13406508/111794)。 – 2012-11-16 09:50:26

回答

4

在這種情況下,需要Application.Exit()。另一種方法是指定一種形式作爲「主窗口」。而當它被關閉,應用程序將終止:

Application.Run(form1); 

.NET Framework還支持「當最後一個窗口關閉」關斷模式。請在this thread中查看我的代碼以獲取所需的代碼。

+0

我已經提到Application.Exit是必需的。我的問題是關於如何在全局鉤住FormClosed事件,以便每次添加新的表單類時手工操作都沒有維護的麻煩。 – user310291 2010-11-01 04:22:15

+0

我讀了你的其他線程,並瞭解到ShutdownMode.AfterAllFormsClose應該解決我的問題,謝謝。 – user310291 2010-11-01 04:27:50

1

使用Application.OpenForms處理所有打開的表單並決定如何處理它們。如果你知道應該保存哪一個 - 提示用戶,否則關閉它。等等。

1

您可以維護一個打開的表單列表,並且每次關閉表單時,都會從列表中刪除它自己,然後檢查列表是否爲空。如果列表爲空,則結束該應用程序。

相關問題