2012-09-20 156 views
1
Form1 browser = new Form1(textBoxUserName.Text.Trim(), textBoxOldPassword.Text.Trim(), textBoxNewPassword.Text.Trim()); 
browser.Shown += (o, t) => { this.Close(); }; 
browser.Show(); 

我希望新窗口顯示並關閉舊窗口。C#窗口創建後立即關閉

發生的事情是,應用程序被關閉時自動this.Close()被調用

我使用的WinForms

+2

當父窗口關閉時,我認爲子窗口關閉。你可以嘗試'Hide()'。 – quantum

+0

如何防止啓動表單退出應用程序? –

+1

如果「this」是您的主窗體,則this.Close()將關閉您的應用程序。這是設計。 – loopedcode

回答

1

我假設你的代碼是從主窗體ParentForm和消息泵是由

Application.Run(new ParentForm()); 

ParentForm關閉時結束開始。爲了實現你試圖做的,你可以相當寫什麼:

[STAThread] 
static void Main() 
{ 
    Form form = new ParentForm(); 
    form.Show(); 

    Application.Run(); // starts the message pump 
} 

在這種情況下,你必須顯式調用Application.Exit()來結束你的程序,例如

public class Form1 : Form 
{ 
    protected override void OnClosed(EventArgs e) 
    { 
     base.OnClosed(); 

     Application.Exit(); 
    } 
} 

更清潔的方法將使用ApplicationContext

0

如果這是您的應用程序越來越加載第一種形式如果關閉它,應用程序將關閉。

相反this.Close的()

做到這一點寫爲this.Hide()。

+0

這是什麼? 首先,這是Windows應用程序中一個非常基本的概念,並且存在您的評論被盜的情況。 它是由我編寫的新鮮答案。 你和我的帖子之間只有3分鐘的差異,所以我可能沒有機會閱讀你的評論。 – Pushpendra