2010-04-19 169 views
4

也許這與它是mainForm有關,但我會問這個問題。 我有我的mainForm是第一次加載程序時啓動。窗體沒有顯示

然後我點擊一個叫做Add的按鈕,它應該打開一個新窗體並關閉mainForm。

問題是,是顯示一秒鐘的新形式,然後關閉兩者。

代碼:

private void addFrmBtn_Click(object sender, EventArgs e) 
    { 
     saveForm saveform = new saveForm(); 
     saveform.Show(); 
     this.Close(); 
    } 

回答

5

在你Program.Main()方法,你可能有這樣的事情:

class Program 
{ 
    void Main() 
    { 
     Application.Run(new MainForm()); 
    } 
} 

這意味着你的應用程序的消息循環各地的主要形式運行。一旦關閉,應用程序的主UI線程就會隨之而來。

您可以:

這裏是你怎麼做選項3:

private void addFrmBtn_Click(object sender, EventArgs e) 
{ 
    saveForm saveform = new saveForm(); 
    saveform.Show(); 
    this.Hide(); 
} 
1

這個問題似乎是你正在關閉其打開子窗體父窗體。 要保留表單,請使用this.Hide();而不是接近。

1

我想象當主窗體關閉時,它會終止您的應用程序。你的代碼改成這樣:

private void addFrmBtn_Click(object sender, EventArgs e) 
    { 
     saveForm saveform = new saveForm(); 
     saveform.Show(); 
     this.Hide(); 
    } 
0

在項目屬性 ,關斷模式下,去選擇「當最後一個窗體關閉」

對不起,這個選項似乎只工作在Visual Basic項目

+0

我去了性能,這部分是下? – sark9012 2010-04-19 12:19:29

+0

ha忘記了它,這個選項似乎只在visual basic項目下才有效 – Fredou 2010-04-19 12:22:50

0

我猜你正在顯示主表格:

Application.Run(new MainForm());

這是由Visual Studio生成的默認代碼和它有一些可能意外行爲:

This method adds an event handler to the mainForm parameter 
for the Closed event. The event handler calls ExitThread to 
clean up the application. 

http://msdn.microsoft.com/en-us/library/ms157902.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.run.aspx

要麼不傳遞的形式Application.Run()或使用.Hide()而不是.Close()。