2012-06-12 43 views

回答

2

如果你真的要關閉的主要形式,但離開了應用程序的運行,你可以讓你的默認類啓動應用程序上下文:

using(MyContext myContext = new MyContext()) 
{ 
    Applicaton.Run(myContext); 
} 

其中MyContext繼承自ApplicatonContext

您的應用程序上下文可以根據需要加載和關閉窗體。我在一個項目中執行此操作,我在上下文中啓動登錄表單。只有成功完成主表單纔會加載。我還允許通過終止主窗體並重新加載登錄表單來處理程序中的「註銷」。

編輯:從評論中,它可能是你正在尋找的是.Hide()。這不會導致您的表單卸載,並且調用.Show()會將其恢復(例如,您可以使用定時器或其他形式持有對主窗體的引用來進行調用)。我更喜歡使用ApplicationContext,因爲它負責將程序保存在遠離用戶可能嘗試關閉的UI元素的內存中。

+0

我不明白!我不知道c#中的上下文!請你換一種方式? –

+0

這不是複雜的事情嗎?在登錄窗口的例子中,您甚至可以在初始化組件之前打開對話框,甚至在初始化組件之前等等。我真的認爲他所要查找的只是'Hide()',但我很想聽聽爲什麼這是不夠的。 – SimpleVar

+0

上下文只是用於管理項目表單的包裝器。如果您的項目默認類調用它,您可以啓動任何表單或從那裏運行任何後臺進程。請參閱:http://www.c-sharpcorner。com/UploadFile/johnconwell/ApplicationContexttoEncapsulateSplashScreenFunctionality11232005041406AM/ApplicationContexttoEncapsulateSplashScreenFunctionality.aspx爲其使用的示例。 – Godeke

2

您可以使用隱藏方法。

嘗試這樣做:

frmMain fm = new frmMain(); 
this.Hide(); 
fm.Show(); 

或者:

frmMain fm = new frmMain(); 
this.Hide(); 
fm.ShowDialog(); 
this.Show(); 

後者將打開的窗口,一旦被關閉,之前的窗口將再次出現。

+0

謝謝你這個完美的工作,就像其他答案一樣簡單。謝謝! –

2

我所做的來解決這個問題是:

this.Hide() 

大概沒有做到這一點的最好辦法,但依然。

你甚至可以把它找回來通過調用

this.Show()