2011-09-05 94 views
0

如何在形式2 打開窗體1上關閉按鈕點擊X我試過,但它不工作:如何在窗體上打開新窗口關閉?

private void supplierShow_FormClosing(object sender, EventArgs e) 
{ 
    new suppliersList().Show(); 
} 

謝謝。

+2

什麼是「不能工作」? – BoltClock

+0

你有沒有在任何地方註冊關閉活動? – Oded

+0

哪裏需要註冊? – Ignas

回答

1

不能完全肯定不知道更多你的代碼,但對我來說,它看起來像您聲明一個局部變量(基類形式可能的新suppliersList)和顯示來自另一種形式的Closing事件的形式。

你的窗體2對象可能會被刪除/設置/垃圾收集很快,在這一點上我不能完全確定該範圍內聲明的形式還是會有一個美好的生活。

如果Form2的是申請表,當你關閉它的應用程序實際上將終止。

一般

我認爲這種形式的切換是最好的完成,從主要方法,同樣的地方,你可能有Application.Run(new Form2());,因爲有你有應用程序流程和MessageLoops的完全控制...控制

0

我不得不解決方案:

第一:

您可以在程序中類的唯一引用您suppliersList:

public static suppliersList SuppList = new suppliersList(); 

你現在可以將其隱藏,如果你想:

Program.SuppList.Hide(); 

你可以隨時表現出來,太:

Program.SuppList.Show();

要小心!不要Dispose SuppList。如果確實如此,則爲其分配一個新對象new suppliersList();。請注意,此解決方案將成功只有當Form1中不是主要的形式(即Application.Run(new form1());

二:

你可以開始form2作爲form1窗口的子:

new suppliersList().Show(this); 

因爲在另一個答案中,應用程序循環位於form1上。如果form1被關閉,那麼整個應用程序也將被關閉。但是,啓動主窗口的子窗口將阻止應用程序關閉。

如果答案是對您有用,請把它標記爲您最好的答案。

+0

它不是應用程序循環,它實際上是消息泵。我不喜歡你的第一選擇。我更喜歡你的第二個,但我仍然不會在關門的時候創造一個新的孩子,更好地隱藏和不關閉。 –

+0

@Davide是的。他也可以用e.Cancelled = false取消關閉;然後隱藏表格,然後他可以顯示他的表格2 ... – 2011-09-05 17:45:28

+0

哦 - 哦。該表單將在MDSN關閉後處理。我會編輯答案。 – 2011-09-05 18:01:43

相關問題