2013-01-16 26 views
0

可能重複:
Windows Forms: Change application mainwindow at runtime處置的主要形式,並創建一個新的C#

我想創造新的形式,並摧毀在C#中的主要形式。 我該怎麼做?

var fw2 = new Form2(); 
fw2.Show(); 
this.Dispose(); 

此代碼只顯示秒的第二種形式,並關閉我的程序。 任何想法?

+0

主要消息泵連接到第一種形式,最有可能的,所以關閉它關閉泵,然後接着退出' Main' - 關閉主線程。而不是關閉第一種形式,快速選項是「隱藏」它。 –

+0

好吧,我可以使用this.Hide(),而不是this.Dispose()然後它的作品。但是當用戶想要關閉第二個窗體時,我必須調用Enviorment.Exit(0)。 – Yozer

+0

您可以讓第一個表單訂閱第二個窗體'Closed'事件,並在'Closed'關閉窗體1上。 –

回答

0

我在Program類中做過這樣的事情。我只是把通常在Main方法中看到的下面的代碼放到一個循環中。

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(new frmMain()); 

一旦主窗體已經關閉了代碼離開「運行」方法並進入一個循環,檢查一個應用程序的全局變量,看它是否需要呈現一種新的形式。

如果你只是想打開一個新的表單,但它看起來工作得很好,如果你經常'換出'你的主要表單進出。

我的代碼如下(有點)像這樣...

while (true) 
{ 
    if (AppSettings.SomeFormSettng = FormSetting.ShowAnotherForm) 
    { 
     Form showThisForm = AppSettngs.TheForm; 
     if (ThisIsTheFirstRun) 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      ThisIsTheFirstRun = false; 
     } 
     Application.Run(new showThisForm()); 
    } 
    else 
    { 
     return; 
    } 
} 
相關問題