Unterschied zwischen. Owner-Eigenschaft und ShowDialog (IWin32Window-Besitzer)?

9

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 werden

Ich 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?

    
Preets 27.12.2008, 17:29
quelle

1 Antwort

4

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:

%Vor%

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).

    
SaguiItay 28.12.2008 08:55
quelle

Tags und Links