2008-10-22 8 views
9

J'ai une liste de chaînes qui est régénérée toutes les 5 secondes. Je veux créer un menu contextuel et définir ses éléments de manière dynamique en utilisant cette liste. Le problème est que je n'ai même pas la moindre idée de comment faire cela et de gérer l'action de clic pour chaque élément généré (qui devrait utiliser la même méthode avec un paramètre différent DoSomething ("item_name")).Ajouter dynamiquement des éléments à un menu contextuel et définir Action de clic

Comment est-ce que je devrais faire ceci?

Merci pour votre temps. Cordialement.

Répondre

19

Ainsi, vous pouvez effacer les éléments dans le menu contextuel avec:

myContextMenuStrip.Items.Clear(); 

Vous pouvez ajouter un élément en appelant:

myContextMenuStrip.Items.Add(myString); 

Le menu contextuel est un événement ItemClicked. Votre gestionnaire pourrait ressembler à:

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
{ 
    DoSomething(e.ClickedItem.Text); 
} 

Cela semble fonctionner pour moi. Faites-moi savoir si j'ai mal compris votre question.

+0

Merci! C'est ce que je cherchais –

+0

Eh bien, cela ajoute une chaîne ... Comment pourrait-on ajouter un MenuItem? Cela faciliterait les manipulateurs d'événements –

1

Une autre alternative à l'aide d'un objet ToolStripMenuItem:

//////////// Create a new "ToolStripMenuItem" object: 
ToolStripMenuItem newMenuItem= new ToolStripMenuItem(); 

//////////// Set a name, for identification purposes: 
newMenuItem.Name = "nameOfMenuItem"; 

//////////// Sets the text that will appear in the new context menu option: 
newMenuItem.Text = "This is another option!"; 

//////////// Add this new item to your context menu: 
myContextMenuStrip.Items.Add(newMenuItem); 


dans l'événement ItemClicked de votre myContextMenuStrip, vous pouvez vérifier quelle option a été choisie (basée sur la propriété du nom de l'élément de menu)

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
{ 
    ToolStripItem item = e.ClickedItem; 

    //////////// This will show "nameOfMenuItem": 
    MessageBox.Show(item.Name, "And the clicked option is..."); 
} 
Questions connexes