c# - opciones - quitar elementos menu contextual
Agregue elementos dinámicamente a un Menú contextual y establezca Acción de clic (2)
Por lo tanto, puede borrar los elementos del menú contextual con:
myContextMenuStrip.Items.Clear();
Puede agregar un artículo llamando:
myContextMenuStrip.Items.Add(myString);
El menú contextual tiene un evento ItemClicked. Su controlador podría verse así:
private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
DoSomething(e.ClickedItem.Text);
}
Parece que funciona bien para mí. Avíseme si malinterpreté su pregunta.
Tengo una lista de cadenas que se regenera cada 5 segundos. Quiero crear un menú contextual y establecer sus elementos de forma dinámica usando esta lista. El problema es que no tengo ni idea de cómo hacer eso y administrar la acción Click para cada elemento generado (que debería usar el mismo método con el parámetro DoSomething ("item_name")).
¿Cómo debería hacer esto?
Gracias por tu tiempo. Atentamente.
Otra alternativa que utiliza un objeto 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);
Dentro del evento ItemClicked
de su myContextMenuStrip
, puede verificar qué opción se ha elegido ( según el nombre de la propiedad del elemento del menú )
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...");
}