Ouvrir form dans Panel [Résolu]

Messages postés
9
Date d'inscription
jeudi 16 juin 2011
Dernière intervention
25 avril 2012
- - Dernière réponse : sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 16 juin 2011 à 16:55
Bonjour à tous,

Je développe une petite application sous Visual Studio en C# et je n'arrive pas à ouvrir une form dans un panel.
Je m'explique : J'ai une form Main qui contient panel1 et panel2. Dans le panel1 j'affiche une form Menu avec ce code :

WMenu Form1 = new WMenu();
Form1.TopLevel = false;
Form1.FormBorderStyle = FormBorderStyle.None;
Form1.Parent = splitContainer2.Panel1;
Form1.Top = 0;
Form1.Left = 0;
Form1.Size = splitContainer2.Panel1.ClientSize;
Form1.Dock = DockStyle.Fill;
Form1.BringToFront();
Form1.Show();

La form Menu est un treeview avec différents noeud. Ce que je voudrais faire c'est après un clique sur les noeud enfant afficher les form correspondante au noeud dans le Panel2 de la form Main.
J'espère avoir été clair dans mes explication.
Quelqu'un aurait une solution a me proposer ? :-)
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
3
Merci
et bien, le plus simple et ce que je fais habituellement, c'est de stocker la référence vers le control dans le Tag du Node.

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
   var control = treeView1.SelectedNode.Tag as Control;
   if (control == null) {
      return;
   }

   control.Dock = DockStyle.Fill;
   this.splitPanel.Panel2.Clear();
   this.splitPanel.Panel2.Add(control);
   control.Focus();
}


et quand tu crées tes Nodes, tu procèdes ainsi :

var node = new Node("Fabric");
node.Tag = new WFabric();
treeView.Nodes.Add(node);



Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
0
Merci
Hello,

Quel est le type WMenu ?
De quoi il dérive ?


Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate
Messages postés
9
Date d'inscription
jeudi 16 juin 2011
Dernière intervention
25 avril 2012
0
Merci
WMenu est un simple Windows form ou j'ai mis un treeview avec 3noeuds parents, pour ouvrir les forms à partir des noeuds enfants j'ai fait comme ça :
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (treeView1.SelectedNode == treeView1.Nodes[0].Nodes[0])
            {
                WFabric form2 = new WFabric();
                form2 .Show();
            }
            if (treeView1.SelectedNode == treeView1.Nodes[0].Nodes[1])
            {
                WReport form3 = new WReport();
                form3 .Show();
            }
            if (treeView1.SelectedNode == treeView1.Nodes[1].Nodes[0])
            {
                WSuiviFab form4 = new WSuiviFab();
                form4 .Show();
            }
            if (treeView1.SelectedNode == treeView1.Nodes[1].Nodes[1])
            {
                WExped form5  = new WExped();
                form5 .Show();
            }
            if (treeView1.SelectedNode == treeView1.Nodes[2].Nodes[0])
            {
                WStock form6  = new WStock();
                form6 .Show();
            }

Mais pour les ouvrir dans le Panel2 de la form Main aucune idée ^^.
Il faut utiliser un type de form spécial pour faire ça?
Commenter la réponse de Yohken31
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
0
Merci
tu ne peux pas "inclure" une forme dans une autre... pour faire cela, il faut que tu utilises un UserControl.


Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate
Messages postés
9
Date d'inscription
jeudi 16 juin 2011
Dernière intervention
25 avril 2012
0
Merci
Donc je remplace mon WMenu par un user control?
et toutes les forms lié aux noeuds enfants aussi?
Par contre je vois toujours pas comment spécifier l'affichage dans le panel 2 du Main après un clique sur les noeud :-s
Commenter la réponse de Yohken31
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
0
Merci
pour l'ajouter au panel2 :

splitPanel.Panel2.Controls.Clear();
splitPanel.Panel2.Controls.Add(wpMenu);



Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate
Messages postés
9
Date d'inscription
jeudi 16 juin 2011
Dernière intervention
25 avril 2012
0
Merci
Oui ça c'est pour afficher wmenu dans panel2.
Je me suis peu être mal exprimer. Ce que je veux c'est par exemple au moment du clique sur le noeud enfant1 qui est dans le noeud parent1, il faut que la form lié au noeud enfant1 s'affiche dans le panel du Main et non séparément. :s
Commenter la réponse de Yohken31
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
0
Merci
je ne sais pas si j'ai bien compris...

Tu veux que lorsque tu cliques sur un feuille du TreeView que le controle correspondant s'affiche dans Panel2 ?


Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate
Messages postés
9
Date d'inscription
jeudi 16 juin 2011
Dernière intervention
25 avril 2012
0
Merci
oui, si feuille = node c'est ça ^^
Commenter la réponse de Yohken31
Messages postés
9
Date d'inscription
jeudi 16 juin 2011
Dernière intervention
25 avril 2012
0
Merci
Yeah !! Merci beaucoup pour ton aide.


Dernière petite question. Y a t-il une propriété qui peut redimensionner automatiquement ma form WFabric en fonction de la taille de mon Panel2 ??
Car j'ai mis "Autosize" à true mais sa n'a pas l'air d'être ça
Commenter la réponse de Yohken31
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
0
Merci
Normalement, la propriété Dock doit s'en charger... mais il faut que les contrôles de WFabric s'adapte à leur UserControl (Propriété Anchor et Dock)


Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.