Ich nehme an, dass ein WinForms-Besitzer entweder explizit über die .Owner-Eigenschaft oder durch Übergeben des Besitzers in der überladenen Methode ShowDialog(IWin32Window owner) festgelegt werden kann
Ich verstehe nicht, warum diese Methoden unterschiedliches Verhalten zeigen, wenn sie mit MDI-Formularen arbeiten.
Ich habe ein MDIParent und ein MDIChild erstellt.
Ich habe auch ein einfaches WinForms-Dialogfeld namens MyDialogBox erstellt, das seinen Besitzer beim Laden anzeigt.
MessageBox.Show("Der Besitzer des Dialogfelds ist " + this.Owner.Name);
Methode A - Im Ladevorgang von MDIChild habe ich den folgenden Code, der dazu führt, dass der Besitzer von MyDialogBox auf MDIChild gesetzt wird
MyDialogBox box = new MyDialogBox();
box.Owner = this; // Setze den Besitzer als MDIChild
box.ShowDialog();
Methode B - Alternativ habe ich im Laden der Methode von MDIChild den folgenden Code, der dazu führt, dass der Besitzer von MyDialogBox auf MDIParent gesetzt wird
MyDialogBox box = new MyDialogBox();
box.ShowDialog(this); // Übergib MyMDIChild als Besitzer
Ich habe auch folgendes hier gelesen
Nur das MDI-Elternformular kann ein anderes Formular besitzen, sei es ein MDI-Kind, ein modaler Dialog oder ein Formular, bei dem das Elternformular als Owner-Parameter festgelegt wurde.
Wenn dem so ist, sollte Methode A überhaupt nicht funktionieren, oder?
Was übersehe ich? Warum setzt Methode B den Besitzer nicht auf MDIChild?