2012-05-17 17 views
6

Hola Tengo un ToolStripMenu con un menú "Favoritos" al que quiero agregar sub elementos durante mi aplicación WinForms en tiempo de ejecución. Tengo una vista de cuadro de datos en la que hago clic derecho para mostrar un menú contextual que tiene la opción "Agregar a favoritos". Cuando se activa ese evento, me gustaría agregar un elemento utilizando quizás algún texto de la fila seleccionada de la grilla de datos (esto ya sé cómo hacerlo) a este menú de Favoritos. La parte más complicada es que necesito crear código para mi evento newlyCreatedToolStripMenuItem_Click. Determinaré cómo guardar mi lista de favoritos más tarde.Agregar elementos a ToolStrip en RunTime

así que vamos para:

Haga clic derecho datagridview fila para "John Smith"

elegir la opción "Añadir a Favoritos" de ContextMenu

Los Favoritos ToolStripMenu tiene un nuevo elemento añadido a la misma que dice "John Smith"

Al hacer clic en "John Smith" ToopStripMenuItem se desencadena una acción (como seleccionar esa fila en la fila daragridview, etc.)

¿Alguna buena idea para comenzar?

Respuesta

12

si entiendo que bien, supongo que esto es exactamente lo que quiere:

private void buttonAddFav_Click(object sender, EventArgs e) 
    { 
     ToolStripItem item = new ToolStripMenuItem(); 
     //Name that will apear on the menu 
     item.Text = "Jhon Smith"; 
     //Put in the Name property whatever neccessery to retrive your data on click event 
     item.Name = "GridViewRowID or DataKeyID"; 
     //On-Click event 
     item.Click += new EventHandler(item_Click); 
     //Add the submenu to the parent menu 
     favToolStripMenuItem.DropDownItems.Add(item); 
    } 

    void item_Click(object sender, EventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 
4

Esto es bastante simple. Solo tiene que configurar un método de devolución de llamada que se usa para todos los ToolStripMenuItem favoritos. En este método, compara los atributos item.Text o item.Name y ejecuta los diferentes métodos favoritos.

private void FavoriteToolStriptem_Click(object sender, EventArgs e) { 
    ToolStripMenuItem item = sender as ToolStripMenuItem; 
    MessageBox.Show("You clicked on the menu item called " + item.Name + " shown as " + item.Text); 
} 
+0

esto también era correcta, gracias! – ikathegreat

Cuestiones relacionadas