Agregar elementos dinámicamente a un menú contextual & amp; hacer clic en la acción

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo una lista de cadenas que se regenera cada 5 segundos. Quiero crear un menú contextual y configurar sus elementos dinámicamente usando esta lista. El problema es que no tengo ni idea de cómo hacerlo y administrar la acción de clic para cada elemento generado (que debería usar el mismo método con diferentes parámetros DoSomething (" item_name ")).

¿Cómo debo hacer esto?

Gracias por tu tiempo. Saludos cordiales.

¿Fue útil?

Solución

Por lo tanto, puede borrar los elementos del menú contextual con:

myContextMenuStrip.Items.Clear();

Puedes agregar un artículo llamando a:

myContextMenuStrip.Items.Add(myString);

El menú contextual tiene un evento ItemClicked. Su manejador 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 entendí mal su pregunta.

Otros consejos

Otra alternativa con 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 ha sido elegida ( según la propiedad del nombre 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...");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top