Insérer une forme, dans une form

_apo_Spy_Keny Messages postés 2 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 2 mars 2007 - 2 mars 2007 à 12:14
seb8327 Messages postés 4 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 7 mai 2007 - 6 mars 2007 à 18:59
Bonjour,

Je cherche a insérer une forme complète (type Windows.Form) dans une autre form !

J'ai essayé plusieurs méthode comme :

  Control c;
  for (int i = pb.Controls.Count-1; i >= 0; i--)
            {
                c = form2.Controls[i];
                form2.Controls.Remove(c);
                form1.Controls.Add(c);
            }

mais je ne réccupère pas tous les contrôles...

Y a-t-il une méthode plus propre pour cela ? et pour insérer directement la form2 dans la form1 ?

Merci d'avance

Celui qui ne ense pas, ne Crée pas...   

3 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
2 mars 2007 à 14:13
il faut parcourir l'arbre des controles.
Donc, tu peux le faire par la récursivité.

public void FindAllControls(Control c) {
   Control c;
     for (int i = pb.Controls.Count-1; i >= 0; i--)
               {
                   c = c.Controls[i];
                   if (c.HasControls) 
                     FindAllControls(c);
                   form2.Controls.Remove(c);
                   form1.Controls.Add(c);
               }
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
2 mars 2007 à 15:18
Salut, cette méthode aussi semble bien fonctionner :

Control[ ] ctrls = new Control[ this.Controls.Count ];
this.Controls.CopyTo( ctrls, 0 );
this.Controls.Clear( );


Form f = new Form( );
f.Controls.AddRange( ctrls );
f.Show( );
0
seb8327 Messages postés 4 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 7 mai 2007
6 mars 2007 à 18:59
Salut,
Il existe une autre méthode :

     FormInserer formI = new FormInserer;
     formI.TopLevel = false;
     formI.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
     formI.Size = formCourante.Size;
     formI.BringToFront();
     formI.Visible = true;
     formCourante.Controls.Add(formI);

où formI est la form à insérer dans formCourante.
0
Rejoignez-nous