Ouvrir form dans Panel

Résolu
Yohken31 Messages postés 9 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 25 avril 2012 - 16 juin 2011 à 11:02
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre 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 ? :-)
A voir également:

11 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
16 juin 2011 à 16:15
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
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 juin 2011 à 12:42
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
0
Yohken31 Messages postés 9 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 25 avril 2012
16 juin 2011 à 14:27
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?
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 juin 2011 à 14:53
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yohken31 Messages postés 9 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 25 avril 2012
16 juin 2011 à 15:26
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 juin 2011 à 15:30
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
0
Yohken31 Messages postés 9 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 25 avril 2012
16 juin 2011 à 15:53
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 juin 2011 à 15:57
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
0
Yohken31 Messages postés 9 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 25 avril 2012
16 juin 2011 à 16:01
oui, si feuille = node c'est ça ^^
0
Yohken31 Messages postés 9 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 25 avril 2012
16 juin 2011 à 16:44
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 juin 2011 à 16:55
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
0
Rejoignez-nous