2011-03-21 50 views
0

我要防止一種形式的收盤在某些情況下。我知道OnFormClosing, 的使用,但是當窗體隱藏(visible == false),則OnFormClosing方法不叫。 在這種情況下是否有攔截窗體關閉的方法?如何防止隱藏窗體關閉在C#

編輯(一些細節): 形式是在一個的MdiParent孩子,應該留在後臺看不到,等待呼叫從另一個線程(被調用)。

當用戶「斷開連接」時,MdiParent會關閉所有的子窗口,在這種情況下,上述窗體應保持打開狀態,但不可見並仍在等待呼叫。 當MidParent本身關閉時,所有表單應該關閉。

EDIT2(無解?): 似乎沒有解決這個。我現在的解決方法是在MdiParent代碼中排除我未關閉的表單,即關閉所有其他表單。不管是什麼原因

+2

如果它是隱藏的,那麼用戶如何關閉它?或者你的意思是由類似任務管理器的應用程序? – 2011-03-21 09:56:14

+1

如果它隱藏,是什麼導致它關閉?必須有一些與關閉有關的其他操作,您可以明確地調用表單的某個函數來執行您需要執行的操作。否則,您應該提供有關該問題的更多信息。 – user623879 2011-03-21 09:57:21

+0

如何以及什麼導致隱藏窗體關閉?請張貼一些細節 – V4Vendetta 2011-03-21 10:22:06

回答

2
private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
       // This will cancel the event 
       e.Cancel = true; 
} 

,這將有效地關閉停止形式。

+0

這是我第一次嘗試,只要窗體可見,它的工作原理。但是在Form.Visible = false之後,所調用的最後一個方法是OnHandleDestroyed。 – WarpEnterprises 2011-03-22 12:26:03

+0

你如何關閉MdiChildren? – Hallaghan 2011-03-22 14:50:54

+0

我關閉它在的MdiParent表格與frmChild.Close()。我上傳了一個最小的樣本項目[這裏](http://members.aon.at/warpenterprises/MdiTest.zip)。當子窗體可見時,不可能關閉。當子窗體隱藏時,它(和MdiParent)可以關閉。 – WarpEnterprises 2011-03-22 21:14:12