문제 : 대화 상자의 FormClosing() 이벤트가 자식 인 경우 발생합니다. 즉 소유자 속성이 부모 폼으로 설정되었지만 자식 하위 인 경우 설정되지 않았습니다. 그래서 메인 폼을 닫으면 어떤 손자들의 대화 상자에서도 closing 이벤트를 호출하지 않습니다.닫을 때 두 번째 수준 하위 폼 프롬프트를 표시하려면 어떻게해야합니까?
세부 정보 : YesNoCancel 단추가있는 대화 상자에 "변경 사항 저장?"이라는 메시지가 FormClosing() 이벤트에 나타납니다. 취소를 클릭하면 대화 상자가 열린 상태로 유지됩니다.
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