0
可能重複:
Windows Forms: Change application mainwindow at runtime處置的主要形式,並創建一個新的C#
我想創造新的形式,並摧毀在C#中的主要形式。 我該怎麼做?
var fw2 = new Form2();
fw2.Show();
this.Dispose();
此代碼只顯示秒的第二種形式,並關閉我的程序。 任何想法?
可能重複:
Windows Forms: Change application mainwindow at runtime處置的主要形式,並創建一個新的C#
我想創造新的形式,並摧毀在C#中的主要形式。 我該怎麼做?
var fw2 = new Form2();
fw2.Show();
this.Dispose();
此代碼只顯示秒的第二種形式,並關閉我的程序。 任何想法?
我在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;
}
}
主要消息泵連接到第一種形式,最有可能的,所以關閉它關閉泵,然後接着退出' Main' - 關閉主線程。而不是關閉第一種形式,快速選項是「隱藏」它。 –
好吧,我可以使用this.Hide(),而不是this.Dispose()然後它的作品。但是當用戶想要關閉第二個窗體時,我必須調用Enviorment.Exit(0)。 – Yozer
您可以讓第一個表單訂閱第二個窗體'Closed'事件,並在'Closed'關閉窗體1上。 –