Inserer une Form dans une Form... Possible?

Signaler
Messages postés
78
Date d'inscription
samedi 4 août 2001
Statut
Membre
Dernière intervention
29 mars 2007
-
Messages postés
5
Date d'inscription
jeudi 13 janvier 2011
Statut
Membre
Dernière intervention
25 avril 2013
-
Bonjour,

J'aimerais réutilisé une form que j'ai créer pour mon appli dans une autre partie de mon appli...
Je m'explique, C'est la form "SelectMachine" lorsque l'utilisateur veut se connecter à une machine, la form s'ouvre, et j'aimerais utiliser cette même form dans la form "EnvoyerFichier", main sans, cette fois, qu'il y ai besoin d'ouvrir la form "SelectMachine", j'aimerai incruster la form dans "EnvoyerFichier", de manière à ce que l'utilisateur ai tout à porter de main.
Pensez vous que cela soit possible?

Merci d'avance

10 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Salut,
Euh, une forme MDI ?

<hr />
-Blog-
Messages postés
78
Date d'inscription
samedi 4 août 2001
Statut
Membre
Dernière intervention
29 mars 2007

Qu'est-ce que tu entends par form MDI?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Fait une petite recherche sur google!
MDI sur MSDN

<hr />
-Blog-
Messages postés
78
Date d'inscription
samedi 4 août 2001
Statut
Membre
Dernière intervention
29 mars 2007

Oui mais non ce n'est pas une form MDI c'est une form standard...
Messages postés
48
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
23 mars 2007
1
Oui c possible, tu peux y arriver avec l'utilisation des API Windows (Unmanaged code).

La librairieà utiliser c'est "user32.dll".
La fonction à utiliser c'est "SetParent".

Voici la définition de la fonction SetParent :
HWND SetParent(
    HWND hWndChild,
    HWND hWndNewParent
);

Type :HWND handle long

Les paramètres sont :
hWndChild = Le handle du contôle, la feuille, etc.. que tu veux déplacer
hWndNewParent = Le handle du contrôle parent que tu que le contrôle précédement définie soit placé
Messages postés
4
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
7 mai 2007

Salut,
Il existe une autre méthode (peut être un peu plus simple):

     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. Il est aussi possible d'ajouter la Form à insérer dans un panel par example.
Messages postés
4
Date d'inscription
samedi 23 mai 2009
Statut
Membre
Dernière intervention
3 avril 2011
2
peux tu m' expliquer ce code stp.c'est quoi forminserer ?
Messages postés
1
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
1 mai 2010

Pour préciser le message de seb8327, qui est la bonne méthode à utiliser:

Si on veut insérer une form "FormIncluse" dans une form "FormParent", en passant par un Panel par exemple:[list]
[*] on part du principe que les form "FormParent" et "FormIncluse" ont déjà été créées (sinon, depuis l'explorateur de solution, bouton droit sur le nom du projet, ajouter, formulaire windows)
[*] ajouter dans le design de la "FormParent" un panel (en le faisant glisser depuis le groupe "Conteneur" de la "Boîte à outils" regroupant tous les contrôles disponibles).
[*] Ensuite, dans la "FormParent", mettre ce code pour afficher la "FormIncluse":
FormIncluse formIncluse = new FormIncluse();
formIncluse.TopLevel = false;
formIncluse.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
panel.Controls.Add(formIncluse);

/listVoilà, c'est tout simple...
Messages postés
6
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
24 mai 2010

Bonjour,

la méthode pour inclure un formulaire dans un autre a très bien fonctionner pour moi (cependant, il était nécessaire pour moi de faire toutes les étapes qu'à décrit seb8327, sinon mon formulaire n'apparaissait pas).

Petite question : en imaginant que j'ai un formulaire possédant 2 panels. Dans chacun des ces panels, j'aimerais ajouter un autre formulaire (j'utilise la méthode décrite précédemment) mais j'aimerais que chacun des formulaires se lance dans un thead différent pour pouvoir effectuer des opérations en parallèles pendant qu'on les contrôle dans le formulaire principal (via un menu ou des boutons).
=> Cela est il possible ?? Je sais que lorsque l'on lance 2 formulaires, chacun dépend d'un thread différent (enfin je crois ) donc il doit être possible de le faire avec des formulaire imbriqué.

Le but est de pouvoir piloter une webcam pour afficher une vidéo et en même temps capturer des images pour les analysées.

Merci beaucoup à toute la communauté ^^.
Messages postés
5
Date d'inscription
jeudi 13 janvier 2011
Statut
Membre
Dernière intervention
25 avril 2013

Bonjour,

je me permet de revenir sur ce messages (malgrés sont ancienneté car j'ai un petit probleme).

J'ai un form1 qui est ma form principal et une 2eme form, je voulais intégré ma form2 dans ma form1 pour cela j'ai utilisé le code proposé par seb8327

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


Je voudrais a partir d'un bouton présent dans ma form2, efface ma form2 contenu dans ma form1 pour qu'une form3 la remplace (dans mon form1).


J'ai bien essayer un code du type :

 Form3 FTrois = new Form3 ();
            FTrois.TopLevel = false;
            FTrois.Top = 10;
            FTrois.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            FTrois.Size = this.Size;
            FTrois.BringToFront();
            FTrois.Visible = true;
            this.Parent.Controls.Remove(Form2);
            this.Parent.Controls.Add(FTrois);
            


j'ai également essayer de rajouter Form1 accueil = new form1(); au debut afin de mettre
 
accueil.Control.Remove(MaForm2); 
accueil.Control.Add(FTrois);



Mais aucune de ses proposition n'a fonctionné, l'un de vous pourrez m'aider si vous plais.

(Si vous auriez préféré que je recréer une discussion, dites le moi y aura pas de problème, je n'ai pas voulus m'incruster ".