Ich nehme an einem Besitzer winform kann über die .Owner Eigenschaft explizit festgelegt werden oder durch den Eigentümer in der überladenen Methode übergibt Showdialog (IWin32Window Inhaber)Unterschied zwischen. Owner-Eigenschaft und ShowDialog (IWin32Window-Besitzer)?
Ich bin nicht in der Lage zu verstehen, warum diese Methoden unterschiedliche Verhalten zeigen, wenn Arbeiten mit MDI Formen.
Ich habe ein MDIParent und ein MDIChild erstellt.
Ich habe auch eine einfache winform MyDialogBox, die ihren Besitzer bei Belastung anzeigt.
MessageBox.Show("Dialog's owner is " + this.Owner.Name);
Methode A - Bei der Belastung von MDIChild Ich habe den folgenden Code, der die MyDialogBox Besitzer verursacht werden, auf MDIChild
MyDialogBox box = new MyDialogBox();
box.Owner = this; // Set owner as MDIChild
box.ShowDialog();
Methode B - Alternativ kann in der Belastungsmethode MDIChild ich habe den folgenden Code, der die MyDialogBox Eigentümer verursacht werden auf MdiParent
MyDialogBox box = new MyDialogBox();
box.ShowDialog(this); // Pass MyMDIChild as owner
Ich las auch die folgenden here
Nur das übergeordnete MDI-Formular eine andere Form besitzen kann, ist es ein MDI Kind sein, ein modaler Dialog oder ein Formular, in dem die Eltern wurde als Besitzer param gesetzt.
Wenn ja, sollte Methode A überhaupt nicht funktionieren, nicht wahr?
Was fehlt mir? Warum legt Methode B den Besitzer nicht auf MDIChild fest?
Versuchen Sie dies in VB6 und sehen Sie, ob es mit dem von Ihnen angegebenen Link übereinstimmt. Wenn ja, - Framework hat einen Bug. – shahkalpesh
Nicht sicher über VB6 aber VB.NET scheint sich genauso zu verhalten wie C# – Preets