Ajouter dynamiquement des éléments à un menu contextuel & amp; définir l'action Click

StackOverflow https://stackoverflow.com/questions/225394

  •  03-07-2019
  •  | 
  •  

Question

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 ne sais même pas comment faire cela et gérer l'action Click pour chaque élément généré (qui devrait utiliser la même méthode avec un paramètre différent, DoSomething ("quot_name")).

Comment dois-je faire cela?

Merci pour votre temps. Cordialement.

Était-ce utile?

La solution

Vous pouvez donc effacer les éléments du menu contextuel avec:

myContextMenuStrip.Items.Clear();

Vous pouvez ajouter un élément en appelant:

myContextMenuStrip.Items.Add(myString);

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

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

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

Autres conseils

Autre alternative utilisant 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 ( en fonction de la propriété name 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...");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top