Frage

Ich bin mit einem übergeordneten MDI-Formular, das ein Childs hat und sie zeigen sich sehr gut, wenn sie von diesem Elternteil aufgerufen werden und i verwenden, um intensiate Kind Form als

ChildForm child = new ChildForm();
child.IsMdiContainer= this;
child.Show();

funktioniert gut, sobald sie von den Eltern Kontrolle aufgerufen werden, aber wenn ich sie aus einer anderen Form nennen, die nicht Kind eines Elternformulars ist dann länger sie nicht bleibt Kind Haupt Elternteil eines offensichtlicher Grund ist, dass, wenn ich intensiate sie auf, dass unabhängige Form ist, dass ich einfach nicht child.MDIParent verwenden = this; weil sie dazu neigen, unabhängige Form Elternteil zu machen, aber ich habe auch versucht,

MDIParentForm form = new MDIParentForm 

ChildForm child = new ChildForm();
child.IsMdiContainer= form ;
child.Show();

aber auch Dosis nicht helfen, anstatt dies wirft es eine Ausnahme, dass die Form, dass ich Satz Elternteil bin versucht, ist nicht MDI Container dann dazu gebe ich einen Versuch und ändern

MDIParentForm form = new MDIParentForm ;
form.IsMdiContainer= true;
ChildForm child = new ChildForm();
child.MDIParent = form ;
child.Show();

und im Ergebnis nichts erscheint

Jede Idee, wie man ..........

War es hilfreich?

Lösung

ein Kind von einem anderen Kind zu erstellen, schreiben Sie einfach es wie folgt aus:

ChildForm sibling = new ChildForm();
sibling.MdiParent = this.MdiParent;
sibling.Show();

oder Brand ein benutzerdefiniertes Ereignis, dass die Eltern reagieren kann.

Andere Tipps

Sie sollten die Eltern festgelegt, die bereits bestehende MDIForm sein, nicht einen neuen erstellen.

Wenn es nicht schon eine Instanz des MDIForm ist, sollten Sie nicht nur eine Instanz des Formulars erstellen, aber es auch zeigen.

var mdiForm = new MdiForm();
mdiForm.IsMdiContainer = true;
var childForm = new ChildForm();
childForm.MdiParent = mdiForm;
mdiForm.Show();
childForm.Show();

Beachten Sie auch, dass ich mdiForm.IsMdiContainer verwenden, AFAIK gibt es keine IsMdiParent Eigenschaft.

schreibt diesen Code in einer übergeordneten Form ....

childform  obj = new childform( );
               obj.MdiParent = this;
               obj.StartPosition = FormStartPosition.CenterScreen;
               obj.Show( );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top