問題:如果它是一個孩子,也就是說,它的所有者屬性設置爲父窗體,但如果它是一個孩子的,一個孩子的對話框的的FormClosing()事件引發不。因此,關閉主窗體不會在任何孫子對話框上調用關閉事件。如何才能讓二級子窗體關閉提示?
詳細信息:在FormClosing()事件中,對話框會提示「Save Changes?」,並帶有YesNoCancel按鈕。點擊取消保持對話框打開,即取消關閉。
Private Sub Dialog_FormClosing(...) Handles Me.FormClosing
If MessageBox.Show("Save Changes?", YesNoCancel) = No Then
e.Cancel = True
End If
End Sub
所以實例化一個新的對話框,其所有者屬性集...
// called from the main form
Dim dlg As New Dialog
dlg.Owner = Me
dlg.Show()
...優點是,如果用戶試圖關閉所有者/父對話框會提示保存受益。點擊取消將保持對話框打開,並且它也是所有者。
但是,如果從孩子父母(也與它的主人屬性集),而不是從父母的結果表明,同一個對話框:
// called from another child
Dim dlg As New Dialog
dlg.Owner = Me
dlg.Show()
然後在孩子的FormClosing()事件如果最頂層的父母關閉,則不會提高。
這是框架知道設計上的限制?在我開始爲這個黑客攻擊一個討厭的解決方案之前,有什麼我應該考慮的嗎?
感謝您的回覆。
感謝您的回答。 – invert 2010-02-11 10:31:36