2011-04-27 106 views
1

我正在使用Visual Studio C#,並且陷入了使新窗體成爲主窗體的局面。我需要應用程序在關閉時關閉,並且我想關閉以前的表單而不關閉應用程序。如何設置窗體作爲應用程序的主窗體? C#

當前的嘗試(無效):

FormClass newForm = new FormClass(); 
newForm.Show() 

previousForm.Close() 

回答

3

首先理解爲什麼應用程序退出。從documentation of Application.Run(Form)

此方法添加的事件處理程序 用於封閉 事件中MainForm的參數。事件處理程序調用 ExitThread來清理 應用程序。

如果你可以逃脫只是隱藏它,而不是關閉它

FormClass newForm = new FormClass(); 
newForm.Show(); 

previousForm.Hide(); 

如果您需要將其關閉(或寧可)

阿爾特的Program.cs。爲了防止終止您可以通過運行(表格)的添加事件處理程序,使用運行(過載),不添加這樣的處理程序:

var form = new Form1(); 
form.Show(); 
Application.Run(); // The application will not exit when form is closed 

但在這種情況下,您將需要調用的應用。在關閉newForm時(或在您想要退出的任何其他情況下),退出()自己。

+0

不錯 - 我從來沒有意識到Application.Run(Form)實際上註冊了一個事件處理程序。 – Justin 2011-04-27 17:32:13

+0

這是我們不常看的那些東西之一,對吧? :) – 2011-04-27 17:34:17

-1

如果您的意圖是使用類似splashscreen的東西,請嘗試在後臺線程上調用第一個表單,如果完成,它們將在任務完成後中止線程。 「第一」表格將被關閉。

或者,只需關閉「splashscreen窗體」,結束後臺線程。

它有幫助嗎?

+1

這是一個可怕的想法。你幾乎不應該放棄線程,所有的用戶界面代碼都應該在一個線程上。 – Justin 2011-04-27 17:22:44

+0

嗯,我不認爲這是一個可怕的想法。幾個splashscreen樣本使用這種技術。而且,通過這個問題,我真的不知道這是否會成爲druttka意圖的好辦法。我只是想法如何完成任務。 – marcoaoteixeira 2011-04-27 17:28:44

相關問題