2011-07-01 2 views
1

j'ai le code suivant:C# - ContextMenuStrip étrange comportement

ContextMenuStrip cm1 = new ContextMenuStrip(); 
    ToolStripMenuItem item1 = new ToolStripMenuItem(); 
    ToolStripMenuItem item2 = new ToolStripMenuItem(); 
    cm1.Items.Add(item1); 
    cm1.Items.Add(item2); 
    ContextMenuStrip cm2 = new ContextMenuStrip(); 
    foreach(ToolStripMenuItem item in cm1.Items) 
    { 
    cm2.Items.Add(item); 
    } 

Pourquoi change les cm1.Items du cm2.Items.Add()? Ils sont différents (différents hashcodes)

merci pour votre aide

Répondre

0

Un élément de menu ne peut avoir qu'un seul parent à la fois. Votre boucle foreach est simplement déplacer les éléments de cm1 à cm2.

+0

J'ai besoin d'un menu contextuel par défaut que je peux ajouter d'autres éléments de menu, selon le contexte. y-a-t'il une solution? – annA

+0

(mais merci quand même, ça explique beaucoup :) – annA

+0

Si vous parlez de plusieurs configurations de menu contextuel par contrôle, alors votre meilleur pari est de construire chaque menu contextuel à partir de zéro dans votre gestionnaire d'événement Click puis de le présenter. S'il vous plaît considérez que, bien que je n'ai pas résolu votre problème global, j'ai répondu exactement à la question que vous avez initialement demandée. –