2011-06-22 5 views
9

J'ai un formulaire Parent et j'aime ouvrir un formulaire enfant dans le formulaire parent.Comment ouvrir un formulaire dans un formulaire?

Est-ce que cela peut être fait? Si oui, veuillez me répondre avec un exemple de code.

Merci!

+1

Voulez-vous dire simplement ouvrir le formulaire enfant en utilisant childform.ShowDialog() ou en ajoutant ou en plaçant un enfant dans le formulaire parent? –

+1

@dia J'aime placer childform à l'intérieur du formulaire parent. Si cela peut être fait, veuillez répondre avec l'exemple de code. – cmthakur

+0

J'ai ajouté la réponse à votre condition .... –

Répondre

6

Voici le code pour faire ce que vous voulez:

On suppose que button1 est sous la forme de parent.

private void button1_Click(object sender, EventArgs e) 
     { 
      this.IsMdiContainer = true; 
      Form Form2 = new Form(); 
      Form2.MdiParent = this; 
      Form2.Show(); 
     } 

également le lien suivant vous fournir plus de détails mieux de ce que vous voulez faire:

http://www.codeproject.com/KB/cs/mdiformstutorial.aspx

Hope this helps ...

3

informez la forme enfant que son MdiParent est en cours.

MDI:

form2 frm = new form2(); 
    frm.MdiParent = this; 
    frm.Show(); 
2

dialogue Modal:

var form = new Form1(); 
form.Parent = this; 
form.ShowDialog(); 

enfant MDI:

var newMDIChild = new Form1(); 
newMDIChild.MdiParent = this; 
newMDIChild.Show(); 
+0

Pour la boîte de dialogue modale, j'ai eu une erreur sur form.Parent = ceci, mais a pu faire form.ShowDialog (this) –

6

Cela dépend de ce que vous entendez par "dans la forme". Si vous avez besoin d'avoir le formulaire enfant affiché comme un contrôle du formulaire parent, je suppose que vous pouvez essayer ParentForm.Controls.Add(new ChildForm()). Ou peut-être même placer le formulaire enfant dans un conteneur existant dans le formulaire parent en utilisant à nouveau la collection Controls du contrôle conteneur.

HTH

+0

+1 pour considérer la phrase 'dans la forme' –

0
Form child = new Form(); 
child.MdiParent = this; 
child.Show(); 

écris ces lignes de code sous forme de parent et vérifier.

4

Je note que toutes les réponses Supposons ici que l'OP ait eu l'intention d'utiliser l'architecture de formulaire MDI, bien que cela ne soit jamais explicitement indiqué.

Et il existe un autre moyen de créer un 'Enfant' d'une autre Forme: en définissant simplement sa propriété 'TopLevel' sur 'False', puis en définissant sa propriété 'Parent' sur l'autre Formulaire.

Form2 f2 = new Form2(); 
f2.TopLevel = false; 
f2.Parent = someOtherForm; 
f2.Show(); 

Par ailleurs Je pense que l'idée de « formulaires dans les formulaires » est une mauvaise idée et MDI architecture est maintenant, à juste titre, dépréciée par MS.

beaucoup mieux, je crois, de faire les formes secondaires « occasion, et si vous devez avoir d'autres conteneurs dans un formulaire, utilisez UserControls, panneaux, etc.

+0

c'est une bonne réponse, surtout quand quelqu'un travaille sur l'affichage et le masquage de plusieurs contrôles de panneau. J'ai aimé ça! – CodeIt

-2
var childform = new form2(); 
childform.TopLevel=false; 
this.Controls.add(childform); 
childform.Show(); 

Cela fonctionne pour moi.

Questions connexes