2012-02-24 16 views
5

Si tengo un menú contextual, ¿es posible unirlo a otro menú? Por lo que se obtiene:Unir los menús contextuales

Menu 1 Item 1 
    Menu 1 Item 2 
    Menu 1 Item N 
    --------- 
    Menu 2 Item 1 
    Menu 2 Item 2 
    Menu 2 Item N 

Tomemos un ejemplo de un programa de libreta similar. Hay repetición en los menús, ya que hay un conjunto estándar de herramientas que aparecen tanto en el menú de edición como en el menú contextual de controles de edición (Cortar, Copiar, Pegar, Seleccionar todo ...).

Me gustaría tener un menú llamado ClipboardTools, que aparecerá tanto en el menú contextual Editar y controlar, sin necesidad de crear los elementos más de una vez. Por supuesto, en este caso la repetición no es tan mala, pero tengo que lidiar con menús más grandes que aparecen en 3-4 menús diferentes, y lo ideal es que no sean submenús.

Respuesta

5

Sí. Como cada elemento de menú es un control separado, puede agregar el mismo elemento de menú a ambos menús;

var joinedMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
    menu1.Items.Add(joinedMenuItem); 
    menu2.Items.Add(joinedMenuItem); 

De la misma manera puede agregar elementos de un menú a otro;

menu1.Items.AddRange(menu2.Items); 

Ese es el momento de decir que:
ToolStripMenu subtemas son que Artículos propiedad.
ToolStripMenuItem subelementos están en propiedad de DropDownItems.

Así que si usted tiene dos principales elementos de menú (como Archivo y Editar) y que desea eliminar subelementos compartidos:

foreach (var item in topMenuItem2.DropDownItems) 
    { 
     topMenuItem1.DropDownItems.Remove(item); 
    } 

En la vida real, si uno quiere tales flexible sistema de menús, lo más probable uno crearía una lista total de elementos del menú. Y tal vez subconjuntos de elementos del menú por categorías. Luego uno agregaría elementos de menú de dicha lista o conjuntos al menú mostrado.

Como ejemplo, puede proporcionar la posibilidad de que los usuarios personalicen el menú o creen sus propias secciones de menú personalizadas. Como se hace en Visual Studio.

+0

Eso es para agregar elementos individualmente, ¿hay alguna manera de agregarlos fácilmente? – Matt

+0

Actualizó la respuesta. ¿Eso responde tu pregunta? Podría proporcionar más ejemplos – MajesticRa

+0

Muchas gracias. Esto explica mucho. – Matt

Cuestiones relacionadas