MSDN documentation狀態:Form.Owner - 國有形式不關閉/隱藏遞歸
當窗體通過另一種形式所擁有,它被關閉或隱藏與所述 所有者形式。例如,請考慮一個名爲
Form2
的表單,它由 擁有一個名爲Form1
的表單。如果Form1
已關閉或最小化,則Form2
也是關閉或隱藏的 。
顯然隱藏是不遞歸的工作?當我有一堆4個彼此參與的形式(GrandChildForm.Owner = Child; ChildForm.Owner = ParentForm;
等)時,最小化他們中的任何一個只會最小化它的直接孩子。
當關閉其中一個表單時,只會引發直接子表單的FormClosing/Closed事件,但不會影響其他的表示器。 Again the docs沒有說明,這並不能遞歸調用
如果一個表單有任何兒童或獨資的形式,一個
FormClosing
事件也 提出的每一個。如果任何一個表單取消該事件,則表單中沒有任何 已關閉。
我想要實現:
- 最小化/恢復的形式也應最小化/恢復所有它的祖先。
- 關閉表格應該沿着表格的層次結構向「最年輕」的孩子走,如果他們中的任何一個決定不關閉(
FormClosingEventArgs.Cancel = true;
),則交易關閉。
如果這種使用額外的事件處理(訂閱業主FormClosing
/FormClosed
/SizeChanged
事件)還是我失去了一些東西來實現?
我猜想這是要走的路,只是想知道我是否錯過了一些東西,因爲文檔不清楚。謝謝! –
OnFormClosing代碼的一個奇怪的副作用是FormClosing事件在層次結構鏈中每兩個形式引發兩次。在我看來,設置所有者(FormClosing爲每個擁有的表單引發)背後的邏輯也正在執行(但僅針對直接子)。 –
我沒有測試過代碼,只是給了你一個想法;)也許刪除base.OnFormClosing(e)會有幫助;) – Dima