Toolstripmenuitem and co

Signaler
Messages postés
448
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
26 juillet 2012
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
bonjour,
je prend des elements d'une table et je voudrais les mettre en toolstripmenuitem dans un menustrip
je parviens a créer les toolstrip menuitem issus de la table
ces toostripmenuitem devrait posseder egalement des items (une sorte d'arbre).
Je voudrais que tous les items que g créé a partir de lta table possede les memes ramifications.
Dois-je les créer a chaque fois?
N'y a t il pas un moyen de "cloner" cette ramification une premiere fois et de la dupliquer?

COmme je sais qu'il y a au moins un element j'ai crée les ramifications en "dur" ds le designer. Maintenant j'aimerais avoir la meme chose "dynamiquement".

merci pour toute aide ou commentaire

4 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
Salut, j'ai pas tout compris.. as tu le même problème que j'ai eu ici ( la 2ème question ) :

http://www.csharpfr.com/infomsg_TOOLSTRIPMENUITEM-ENERVE_787174.aspx#8
Messages postés
448
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
26 juillet 2012
1
oui g eu celui la aussi
quand je parle de ramification
c quelque chos edu genre

A_a
    |_b_d_e
    |_c   |_f

avec A mon élément "principal" . j'aurais plusieurs éléments du type de A auquels je veux appliquer les memes "methodes" (a,b,c,d...) en conservant la forme de l'"arbre".
ces methodes seraient les memes avec juste A (ou autre element) en parametre

POur l'instant des que je trouve un element du type de A je recrée tt "l'arbre"  mais cela me semble un peu lourd
Existe - til une autre methode? (quelle est la meilleure)

merci
Messages postés
448
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
26 juillet 2012
1
zut ca a décalé mon bel arbre avec l'image
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
On peut réutiliser le même "arbre" mais on a un peu de mal après a déterminer la branche racine ce qui pose un problème pour passer des paramètres différents aux methodes associées aux éléments du menu.

ToolStripDropDownMenu dropDown = null;


//  menuItem0
//          |_subItem0
//          |        |_subSubItem0
//          |        |_subSubItem1
//          |
//          |_subItem1
//                   |_subSubItem0
//                   |_subSubItem1


private void InitializeForm( )
{
    this.SuspendLayout( );


    ToolStripMenuItem subSubItem0 = new ToolStripMenuItem( );    subSubItem0.Name subSubItem0.Text "subSubItem0";
    subSubItem0.Click += new EventHandler( SubSubItem_Click );
   
    ToolStripMenuItem subSubItem1 = new ToolStripMenuItem( );    subSubItem1.Name subSubItem1.Text "subSubItem1";
    subSubItem1.Click += new EventHandler( SubSubItem_Click );


    // DropDown créé une seule fois et qui contient
    // tout l'arbre des sous-éléments.
    dropDown = new ToolStripDropDownMenu( );
    dropDown.Items.AddRange
    (
        new ToolStripItem[ ]
        {
            subSubItem0,
            subSubItem1
        }
    );


    ToolStripMenuItem subItem0 = new ToolStripMenuItem( );    subItem0.Name subItem0.Text "subItem0";
    subItem0.DropDown = dropDown; // On ajoute le DropDown.


    ToolStripMenuItem subItem1 = new ToolStripMenuItem( );    subItem1.Name subItem1.Text "subItem1";
    subItem1.DropDown = dropDown; // On ajoute le DropDown.


    ToolStripMenuItem menuItem0 = new ToolStripMenuItem( );
    menuItem0.Name = "menuItem0";
    menuItem0.Text = "menuItem0";
    menuItem0.DropDownItems.AddRange
    (
        new ToolStripItem[ ]
        {
            subItem0,
            subItem1
        }
    );
   
    MenuStrip menuStrip = new MenuStrip( );
    menuStrip.Items.Add( menuItem0 );


    this.MainMenuStrip = menuStrip;
    this.Controls.Add( menuStrip );


    this.ResumeLayout( );
}


private void SubSubItem_Click( object sender, EventArgs e )
{
    // Ici on a du mal a déterminer l'arbre racine
    // Le OwnerItem étant null.
    // Faudrait voir avec l'event DropDownOpening.
    MessageBox.Show( ( ( ToolStripMenuItem )sender ).Name );
}

C'est moyen, autant appeler une fonction qui créer un nouvel "arbre" pour chaque éléments, ça prendra peut être plus de place en mémoire mais apparemment les ToolStripMachins ont été pensés comme ça.