Esto es un pequeño apunte de los pasos a dar para hacer que en un formulario Mdi, se fusionen los menús del formulario Hijo y del formulario Padre. El proceso de mezcla de menús no es un proceso muy fino, sino bastante poco preciso, por lo que es preciso, antes de hacer nada, diseñar los menús y hacer pruebas para ver como quedan. El intentar mezclar dos menús que no se han preparado para unirse es una especie de desastre estético, es francamente difícil que quede bien.
Primero.: Poner el valor [true] en la propiedad [menuStrip]. [Allowmerge]= true, de los menús [menuStrip], tanto del formulario padre como del formulario Hijo.
Segundo.: Los menús están organizados en una colección de índice cero (0) de forma que el primer menú es el numero 0 el segundo el 1 y así sucesivamente. Este dato hay que tenerlo en cuenta a la hora de colocar los menús como queramos que se sitúen, ya que hay que hacerse un pequeño diagrama del resultado final, de donde esta cada opción de menú y del numero índice que ocupan en ese menú desplegable empezando por el cero (0). Por cierto… los separadores también son una opción de menú y hay que asignarles su número.
Tercero.: La propiedad [MergeIndex] indica la posición en la que se colocará la opción de menú (hija) que se inserta en la colección de menús (padre). Una posición (-1) no hace nada
Cuarto.: la enumeración [MergeAction] solo funciona con los menús hijos
Para unir dos menús, en principio no hay que tocar nada, porque la propiedad [MenuStrip].[Allowmerge] toma el valor true por defecto y en cada opción de menú el valor de la propiedad [MergeAction]= Append (valor por defecto) y la propiedad [MergeIndex] tome el valor -1.
Después de ver cómo queda la mezcla de menús es cuando tenemos que intervenir.
Lo más normal es que queramos que un menú (principal) de los que aparecen e posición Horizontal aparezca en un lugar determinado. Eso se hace [MergeAction=Insert] [MergeIndex=Posición donde queremos que aparezca]. Recuerda que se empieza a contar por la Izquierda y a partir del valor cero (0)
El resultado de la mezcla puedes verlo en la figura siguiente. También puedes observar que lo que ha pasado es que se han puesto los menús (todos ellos) uno detrás de otro, de forma que aparecen repetidas opciones de menú como archivo, ventana, ayuda.
En primer lugar vamos a mezclar los menús de Archivo
Tenemos que cambiar los siguientes valores
Elemento del Form Hijo | MergeAction | MergeIndex |
---|---|---|
Archivo | MatchOnly | -1 |
Nuevo | Insert | 0 |
Load | Insert | 1 |
Save | Insert | 2 |
Imprime | Insert | 3 |
Separador | Insert | 4 |
CerrarHijo | Insert | 5 |
El resultado es el siguiente, en el que se observa que los menús están mezclados y que solo aparece un menú archivo en la barra de menús
Realizaremos la misma operación que en el paso anterior pero en este caso tenemos la ventaja de que el menú Hijo tiene que colocarse al final de las opciones del menú padre, y es más fácil hacerlo
Tenemos que cambiar los siguientes valores
Elemento del Form Hijo | MergeAction | MergeIndex |
---|---|---|
Ventana | MatchOnly | -1 |
Separador | Replace | -1 |
Minimizar | Append | -1 |
Observa que el separador ponemos *Replace* porque si no nos saldrían dos separadores juntos, el inferior del menú del padre y el superior del menú del hijo, también puedes observar que solo aparece un menú ventana en el formulario padre
Con este menú tenemos el problema de que (por motivos de ejemplo) son exactamente Iguales, y solo queremos que se una al menú padre uno de los componentes del menú hijo, los demás permanecerán en el menú hijo concretamente solo queremos que suba el menú *contenidos (h)*
En este caso solo queremos que se vea el menú *Contenidos Hijo* en el menú mezclado, los valores que tenemos que dar son los siguientes
Elemento del Form Hijo | MergeAction | MergeIndex |
---|---|---|
Ayuda | MatchOnly | -1 |
Contenidos (h) | Append | 0 |
Separador | Remove | -1 |
Soporte Tecnico (h) | Remove | -1 |
Informar de un Bug (h) | Remove | -1 |
Separador | Remove | -1 |
Acerca De.. (h) | Remove | -1 |
Por último nos queda Colocar el menú *BlokNotas* en la tercera posición empezando por la izquierda
Elemento del Form Hijo | MergeAction | MergeIndex |
---|---|---|
Blok Notas | Insert | 2 |
El resultado es el siguiente
El proceso de mezcla de menús no es un proceso muy fino, sino bastante poco preciso, por lo que es preciso, antes de hacer nada, diseñar los menús y hacer pruebas para ver como quedan.
El intentar mezclar dos menús que no se han preparado para unirse es una especie de desastre estético, es francamente difícil que quede bien.