每當我單擊窗體的紅色十字關閉按鈕時,我想顯示另一個窗體,但儘管已關閉事件處理程序,但我無法打開另一個窗體。Form.closed事件不會觸發
這是如何我試圖打開另一種形式:
private void Form1_Closed(object sender, System.EventArgs e)
{
itemMaster.Show();
}
誰能告訴我怎麼可以讓我的需求量的?
每當我單擊窗體的紅色十字關閉按鈕時,我想顯示另一個窗體,但儘管已關閉事件處理程序,但我無法打開另一個窗體。Form.closed事件不會觸發
這是如何我試圖打開另一種形式:
private void Form1_Closed(object sender, System.EventArgs e)
{
itemMaster.Show();
}
誰能告訴我怎麼可以讓我的需求量的?
首先,你應該使用FormClosed
事件,而不是Closed
:
的
Closed
事件是在.NET Framework 2.0版過時;請改用FormClosed
事件。 — MSDN page for theForm.Closed
event
void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
// ...
}
其次,確保你實際上已經訂閱了Form1
的FormClosed
事件:
Form1.FormClosed += Form1_FormClosed;
Windows窗體設計器會自動在過某處InitializeComponent
添加類似的一行。如果沒有,那就是爲什麼你的處理程序方法沒有被調用。
如果這仍然沒有幫助,請嘗試處理FormClosing
事件尾部FormClosed
。
如果你用下面的語句開始您的應用程序:
Application.Run(new Form1());
當您關閉Form1
,您的應用程序將退出。即使你打開另一個表單,它將在應用程序退出時被殺死。你可以通過在你的Form1_Closed
方法中添加一個斷點並確定斷點被觸發來確保是這種情況嗎?
如果是這種情況,會發生什麼情況是您的代碼會執行,但是自從應用程序退出後,您的另一個窗體會在打開時立即關閉。
要修復該問題,請使用Hide()
form1而不是關閉它。處理Form_Closing
事件並調用this.Hide()
並設置e.Cancel = true
。
+1 - 這也是我最初的想法。 – 2010-12-04 10:49:17
當您完成表單並想關閉表單時(例如,通過點擊關閉按鈕),請務必使用Close()
。我的form_closing
事件沒有解僱,因爲我在點擊關閉按鈕時只使用了Dispose()
。
我認爲關閉表單的最好方法是同時使用Close()
和Dispose()
。
Close()
=>如果你需要關閉窗體時做一些事情...Dispose()
=>破壞形式(清理資源)。
private void _btnClose_Click(object sender,EventArgs e) { Close(); Dispose(); }
+1'FormClosed'over'Closed`。 – 2010-12-04 10:48:40