回答
貸記的Fredrik MORK對於此解決方案:
FindForm().FormClosing += parentForm_FormClosing;
您可以使用[Control.FindForm](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.findform.aspx)方法代替循環。 – 2011-05-30 10:49:42
@FredrikMörk - 哇,我不知道這個方法,更新了答案。如果您創建了自己的答案,我會刪除我的答案。我認爲這是公平的。 – 2011-05-30 10:53:16
該方法不容易找到,因爲它的命名很糟糕(至少在我看來)。關於答案,只要讓它留下。這是一個社區的努力,對吧? :-) – 2011-05-30 10:55:54
你應該攔截的FormClosing事件。在FormClosingEventArgs中,變量CloseReason會告訴你爲什麼表單關閉。您最好的選擇是攔截這個變量等於UserClosing枚舉值。
沒有FormClosing _inside control_ – user626528 2011-05-30 10:40:32
@ user626528:no,但控件仍然可以將事件處理程序附加到父窗體的FormClosing事件。 – 2011-05-30 10:50:40
隨着OP的新更新,我認爲FredrikMörk和Alex Aza的答案更完整。 – 2011-05-30 11:06:19
形式所有者關閉是當一個形式是通過其能夠封閉當父窗體關閉窗體或窗體關閉另一個母體形式封閉。
使用窗體關閉事件,以檢查是否另一種形式的封閉形式:
private void AppMainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if(e.CloseReason == CloseReason.FormOwnerClosing)
{
// do something
}
else
{
// do nothing
}
}
- 1. 如何檢測桌面窗格中的所有內部框架何時關閉?
- 2. 關閉Windows窗體中的控件中的所有窗體
- 3. 窗體關閉時檢測c#
- 4. 如何從邊框圖標檢測關閉窗體?
- 5. 如何檢測表單何時從另一個窗體關閉仍然打開?
- 6. 窗口關閉時檢測?
- 7. C# - 如何關閉主窗體和子窗體(只有當主窗體關閉時子窗口才會關閉)
- 8. 當表格關閉時打開所有者窗體
- 9. 如何關閉窗體後關閉控制檯窗口
- 10. Wpf檢測何時從不同的窗口關閉窗口
- 11. 當關閉窗體關閉如何關閉所有打開的消息框
- 12. 德爾福 - 如何關閉窗體內的TFrame內的窗體?
- 13. 如何檢測從右鍵點擊窗口關閉 - >關閉窗口?
- 14. 如何關閉窗體窗體並將控件轉移到其他窗體?
- 15. 檢測iframe何時關閉
- 16. 如何檢測WebBrowserTask何時關閉?
- 17. 如何關閉子窗體
- 18. 如何檢測JS中外部窗口的關閉?
- 19. 如何關閉主窗體而不關閉子窗體?
- 20. 如何關閉所有窗口
- 21. 如何處理窗體關閉事件
- 22. 頂部模態窗體關閉嵌套模態窗體關閉所有其他模態窗體?
- 23. 如何在所有子窗口關閉時將控件集中在MDIParent中?
- 24. 如何檢測網站的「所有者」?
- 25. 如何從內部檢測現有的交互式控制檯?
- 26. 當this.Close()執行所有窗體關閉?
- 27. 如何檢測C#中窗體的任何控件的更改?
- 28. 如何關閉WPF中的所有打開窗體
- 29. 檢測窗口關閉
- 30. 如何從Windows Forms 2.0中的子窗體關閉父窗體?
你檢查表單上的Closing事件? – MBen 2011-05-30 10:35:46
將活動添加到子窗體並在父窗體關閉時增加它 – Reniuz 2011-05-30 10:35:50
您的問題對我來說有點不清楚。你是否希望a)表單由於在控件內部採取了某些行動而知道它正在關閉,或者b)控件知道表單正在關閉?當然,b)當然是@FredrikMörk, – 2011-05-30 10:48:39