2008-10-22 22 views
9

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 siquiera una pista de cómo hacer eso y administrar la acción Click para cada elemento generado (que debe usar el mismo método con el parámetro DoSomething ("item_name")).Agregue dinámicamente elementos a un Menú contextual y establezca Haga clic en la acción

¿Cómo debo hacer esto?

Gracias por su tiempo. Saludos cordiales.

Respuesta

19

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

myContextMenuStrip.Items.Clear(); 

Usted puede agregar un artículo llamando:

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 malinterpreté su pregunta.

+0

Gracias! Eso es lo que estaba buscando –

+0

Bueno, esto agrega una cadena ... ¿Cómo se puede agregar un elemento de menú? Eso vincularía eventhandlers más fácil –

1

Otra alternativa utilizando 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 de la ItemClicked caso de su myContextMenuStrip, se puede comprobar qué opción se ha elegido (basado en la propiedad del nombre del elemento de 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..."); 
} 
Cuestiones relacionadas