Ich nehme an, der Besitzer eines Winforms kann explizit über die .Owner -Eigenschaft ODER durch Übergabe des Eigentümers in der überladenen Methode ShowDialog (IWin32Window-Besitzer)
festgelegt werdenIch kann nicht verstehen, warum diese Methoden bei der Arbeit mit MDI-Formularen ein anderes Verhalten aufweisen.
Ich habe ein MDIParent und ein MDIChild erstellt.
Ich habe auch eine einfache winform MyDialogBox, die ihren Besitzer beim Laden anzeigt.
%Vor%Methode A - Im Laden von MDIChild habe ich den folgenden Code, der bewirkt, dass der Eigentümer der MyDialogBox auf MDIChild
gesetzt wird %Vor%Methode B - Alternativ dazu habe ich in der load-Methode von MDIChild den folgenden Code, der bewirkt, dass der Besitzer der MyDialogBox auf MDIParent
gesetzt wird %Vor%Ich lese auch die folgende hier
Nur das übergeordnete MDI-Formular kann ein anderes Formular besitzen, sei es ein untergeordnetes MDI-Element, ein modales Dialogfeld oder ein Formular, bei dem das übergeordnete Element als Owner-Parameter festgelegt wurde.
Wenn ja, sollte Methode A überhaupt nicht funktionieren, nicht wahr?
Was vermisse ich? Warum legt Methode B den Eigentümer nicht auf MDIChild?
Wenn Sie die Unterschiede zwischen diesen beiden Optionen mit Reflector betrachten, scheinen sie eine etwas andere Implementierung zu haben:
box.Owner = this
Ordnen Sie den angegebenen Wert dem internen Eigentümerfeld zu.
Wenn Sie jedoch ShowDialog(IWin32Window)
aufrufen, führt die Implementierung den folgenden Aufruf aus, bevor Sie den Wert zuweisen:
Dies könnte zur Zuweisung des MDIParents führen.
( Hinweis : Ich bin weit davon entfernt, ein Experte in Bezug auf MDI zu sein, also könnte ich mich hier irren).
Tags und Links c# winforms modal-dialog mdi