Combinar elementos de menú en el control MenuStrip de Windows Forms

Si tiene una aplicación de interfaz de múltiples documentos (MDI), puede combinar elementos de menú o menús enteros del formulario secundario en los menús del formulario primario.

En este tema se describen los conceptos básicos relativos a la combinación de elementos de menú en una aplicación MDI.

Conceptos generales

En los procedimientos de combinación participan un control de origen y otro de destino:

  • El destino es el control MenuStrip del formulario primario MDI o principal donde se van a combinar los elementos de menú.

  • El origen es el control MenuStrip del formulario secundario MDI que contiene los elementos de menú que quiere combinar en el menú de destino.

La propiedad MdiWindowListItem identifica el elemento de menú cuya lista desplegable va a rellenar con los títulos de los elementos secundarios MDI del formulario primario MDI actual. Por ejemplo, normalmente los elementos secundarios MDI que están abiertos actualmente se muestran en el menú Ventana.

La propiedad IsMdiWindowListEntry identifica qué elementos de menú proceden de un elemento MenuStrip de un formulario secundario MDI.

Los elementos de menú se pueden combinar de forma manual o automática. Los elementos de menú se combinan de la misma manera en ambos métodos, pero la combinación se activa de forma diferente, como se describe en las secciones "Combinación manual" y "Combinación automática" más adelante en este tema. Tanto si la combinación es manual o automática, cada acción de combinación afectará a la acción de combinación que vaya detrás.

La combinación MenuStrip mueve los elementos de menú desde un elemento ToolStrip a otro en lugar de clonarlos, como era el caso de MainMenu.

Valores de MergeAction

La acción de combinación de los elementos de menú se establece en el elemento MenuStrip de origen mediante la propiedad MergeAction.

En la tabla siguiente se describe el significado y el uso típico de las acciones de combinación disponibles.

Valor de MergeAction Descripción Uso típico
Append (Predeterminado) Agrega el elemento de origen al final de la colección del elemento de destino. Se usa para agregar elementos de menú al final del menú cuando se activa alguna parte del programa.
Insert Agrega el elemento de origen a la colección del elemento de destino, en la ubicación especificada por la propiedad MergeIndex establecida en el elemento de origen. Se usa para agregar elementos de menú en medio o al inicio del menú cuando se activa alguna parte del programa.

Si el valor de MergeIndex es el mismo para ambos elementos de menú, se agregan en orden inverso. Establezca MergeIndex como corresponda para conservar el orden original.
Replace Busca una coincidencia de texto o usa el valor de MergeIndex si no se halla ninguna coincidencia de texto y, a continuación, reemplaza el elemento de menú de destino coincidente por el elemento de menú de origen. Se usa para reemplazar un elemento de menú de destino por un elemento de menú de origen con el mismo nombre que hace algo diferente.
MatchOnly Busca una coincidencia de texto o usa el valor de MergeIndex si no se halla ninguna coincidencia de texto y, a continuación, agrega todos los elementos desplegables del origen al destino. Se usa para crear una estructura de menús que inserta o agrega elementos de menú en un submenú, o bien quita elementos de menú de un submenú. Por ejemplo, puede agregar un elemento de menú de un elemento secundario MDI a un menú MenuStripGuardar como principal.

MatchOnly permite navegar por la estructura de menús sin realizar ninguna acción. Proporciona una manera de evaluar los elementos posteriores.
Remove Busca una coincidencia de texto o usa el valor de MergeIndex si no se halla ninguna coincidencia de texto y, a continuación, quita el elemento del destino. Se usa para quitar un elemento de menú del elemento MenuStrip de destino.

Combinación manual

Solo los controles MenuStrip participan en la combinación automática. Para combinar elementos de otros controles, como ToolStrip y StatusStrip, debe combinarlos manualmente llamando a los métodos Merge y RevertMerge en el código según sea necesario.

Combinación automática

Puede usar la combinación automática en aplicaciones MDI activando el formulario de origen. Para usar un control MenuStrip en una aplicación MDI, establezca la propiedad MainMenuStrip en el elemento MenuStrip de destino para que las acciones de combinación realizadas en el elemento MenuStrip de origen se reflejen en el elemento MenuStrip de destino.

Para desencadenar la combinación automática, active el control MenuStrip en el origen MDI. Tras la activación, el control MenuStrip de origen se combina en el destino MDI. Cuando un nuevo formulario se activa, la combinación se revierte en el último formulario y se desencadena en el nuevo. Para controlar este comportamiento, establezca la propiedad MergeAction según sea necesario en cada ToolStripItem y establezca la propiedad AllowMerge en cada MenuStrip.

Consulte también