dynamisch hinzufügen Elemente zu einem Kontextmenü & set Klicken Sie Aktion
-
03-07-2019 - |
Frage
Ich habe eine Liste von Strings, die alle 5 Sekunden regeneriert wird. Ich möchte ein Kontextmenü erstellen und seine Elemente dynamisch diese Liste. Das Problem ist, dass ich nicht einmal eine Ahnung, wie das zu tun, und die Click-Aktion für jedes Element verwalten erzeugt (die die gleiche Methode mit verschiedenen Parametern verwenden sollten DoSomething ( „item_name“)).
Wie soll ich das tun?
Vielen Dank für Ihre Zeit. Mit freundlichen Grüßen.
Lösung
So können Sie die Elemente aus dem Kontextmenü löschen mit:
myContextMenuStrip.Items.Clear();
Sie können ein Element hinzufügen, durch den Aufruf:
myContextMenuStrip.Items.Add(myString);
Das Kontextmenü hat ein ItemClicked Ereignis. Der Handler wie so aussehen:
private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
DoSomething(e.ClickedItem.Text);
}
Es scheint für mich OK zu arbeiten. Lassen Sie mich wissen, ob ich Ihre Frage falsch verstanden.
Andere Tipps
Eine weitere Alternative mit einem ToolStripMenuItem
Objekt:
//////////// 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);
Im Innern der ItemClicked
Veranstaltung Ihrer myContextMenuStrip
, können Sie überprüfen, welche Option gewählt wurde ( basierend auf dem Namen Eigenschaft des Menüpunktes )
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...");
}