Menú Principal. MainMenu

Menú Principal. MainMenu

Un control MainMenu, consiste en un conjunto de opciones que se sitúan horizontalmente debajo del título del formulario. A partir de cada opción, podemos asociar a su vez, grupos de opciones que se mostraran verticalmente al hacer clic en la opción principal o situada en la barra horizontal.

Para crear un menú principal, seleccionaremos del cuadro de herramientas el control MainMenu, y tras dibujarlo en el formulario, se añadirá una referencia del control al panel de controles especiales situado bajo el diseñador. La Figura 275 muestra un control de este tipo al que le hemos dado el nombre mnuPrincipal.

Programación con Visual Basic .NET © Grupo EIDOS

Figura 275. Menú de tipo MainMenu añadido al diseñador del formulario.

La creación de las diferentes opciones que compondrán el menú es un proceso que se ha mejorado y simplificado al máximo respecto a versiones anteriores de VB. El proceso de edición del menú se realiza directamente en el formulario, en el mismo lugar en el que el menú aparecerá en tiempo de ejecución.

Al hacer clic en la primera opción del menú, podemos dar nombre y propiedades a esa opción. Al mismo tiempo, de un modo muy intuitivo, veremos las próximas opciones disponibles, tanto las desplegables a partir de dicho menú, como las de la barra principal. Sólo hemos de movernos en la dirección que necesitemos y dar nombre a las opciones, y valores a sus propiedades. Ver Figura 276.

Figura 276. Creación de las opciones de un menú principal de formulario.

Cada una de las opciones que componen el menú es a su vez un control MenuItem. Si durante su creación sólo proporcionamos el nombre, el IDE va asignando a dicho control valores por defecto en sus propiedades.

Para modificar las propiedades de una opción de menú, sólo hemos de seleccionarlo en la estructura de menú que estamos creando en el diseñador del formulario, y pasar a la ventana de propiedades. Entre las propiedades disponibles para un MenuItem, podemos destacar las siguientes.

• Text. Contiene una cadena con el literal o texto descriptivo de la opción de menú.

© Grupo EIDOS 31. Menús

• Enabled. Permite habilitar/deshabilitar la opción de menú. Cuando se encuentra deshabilitada, se muestra su nombre en un tono gris, indicando que no puede ser seleccionada por el usuario.

• DefaultItem. Permite establecer opciones por defecto. En una opción de menú por defecto, su texto se resalta en negrita.

• Checked. Marca/desmarca la opción. Cuando una opción está marcada, muestra junto a su nombre un pequeño símbolo de verificación o punteo.

• RadioCheck. En el caso de que la opción de menú se encuentre marcada, si asignamos True a esta propiedad, en lugar de mostrar el símbolo de verificación estándar, se muestra uno con

forma de punto. • ShortCut. Se trata de un atajo de teclado, o combinación de teclas que nos van a permitir

ejecutar la opción de menú sin tener que desplegarlo. Al elegir esta propiedad, aparecerá una lista con todos los atajos disponibles para asignar.

• ShowShortCut. Permite mostrar u ocultar la combinación de teclas del atajo de teclado que tenga asignado una opción de menú.

• Visible. Muestra u oculta la opción de menú. • MdiList. Esta propiedad se utiliza habitualmente en opciones situadas en la barra de menú, y

permite establecer que dicha opción al desplegarse, muestre, además de las opciones de menú que le hayamos asignado, la lista de ventanas secundarias MDI, en el caso de que el menú principal esté contenido en un formulario de tipo MDI. Los formularios MDI serán tratados posteriormente.

Podemos adicionalmente, asignar una tecla de acceso rápido o hotkey a una opción de menú, anteponiendo el carácter & a la letra que deseemos, de las que se encuentran en la propiedad Text del control MenuItem. Al igual que sucede con los demás tipos de controles, en el texto de la opción de menú, aparecerá subrayada la mencionada letra. De este modo, cuando despleguemos un menú, no será necesario posicionarnos en una de ellas para ejecutarla, sino que simplemente pulsando la tecla rápida, se ejecutará el código de dicha opción.

También podemos establecer separadores entre las opciones de menú simplemente creando una opción y asignando a su propiedad Text el carácter de guión ( - ).

En nuestro formulario de ejemplo, vamos pues a diseñar un menú con la estructura del esquema mostrado en la Figura 277.

Para todas las opciones se ha asignado una tecla de acceso rápido, y adicionalmente, para las opciones que se indican a continuación, se han modificado algunas propiedades por defecto.

• Guardar. Deshabilitada. • Salir. Atajo de teclado en Ctrl. + S. • Copiar. Opción por defecto. • Pegar. Marcada con símbolo normal. • Cortar. Marcada con símbolo de círculo.

Programación con Visual Basic .NET © Grupo EIDOS

• Elipse. Opción no visible.

Figura 277. Esquema del menú de ejemplo.

La Figura 278 muestra el formulario en ejecución con una parte del menú abierta.

Figura 278. Menú desplegado a varios niveles, mostrando opciones.

Una vez finalizada la fase de diseño del menú, debemos proceder a escribir el código para sus opciones. El evento Click es el que permite a un control MenuItem ejecutar código cuando la opción

de menú es seleccionada. Abriendo por tanto, el menú desde el diseñador del formulario, y haciendo doble clic en la opción correspondiente, nos situaremos en el editor de código, dentro del procedimiento manipulador del evento Click para esa opción. El Código fuente 480 muestra el código que se ejecutará cuando seleccionemos las opciones de menú Abrir y Salir de nuestro ejemplo.

Private Sub mnuAbrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuAbrir.Click

MessageBox.Show("Opción Abrir del menú")

End Sub

Private Sub mnuSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuSalir.Click

Me.Close()

© Grupo EIDOS 31. Menús

End Sub

Código fuente 480

Puesto que muchas de las propiedades de un control MenuItem son manipulables en tiempo de ejecución, añadiremos al formulario varios botones, mediante los cuales realizaremos operaciones sobre las opciones del menú tales como habilitar y deshabilitar, mostrar y ocultar, cambiar el nombre, etc. La Figura 279 muestra el formulario con estos nuevos botones.

Figura 279. Controles Button para manipular por código las propiedades de las opciones del menú.

En el Código fuente 481 podemos ver los manipuladores de evento de estos botones.

Private Sub btnHabilitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHabilitar.Click

Me.mnuGuardar.Enabled = Not Me.mnuGuardar.Enabled

End Sub

Private Sub btnMarcar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMarcar.Click

Me.mnuPegar.Checked = Not Me.mnuPegar.Checked

End Sub

Private Sub btnMostrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMostrar.Click

Me.mnuElipse.Visible = Not Me.mnuElipse.Visible

End Sub

Programación con Visual Basic .NET © Grupo EIDOS

Private Sub btnNombre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNombre.Click

If Me.mnuAbrir.Text = "A&brir" Then Me.mnuAbrir.Text = "HO&LA" Else Me.mnuAbrir.Text = "A&brir" End If

End Sub

Private Sub btnDefecto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDefecto.Click

Me.mnuCopiar.DefaultItem = Not Me.mnuCopiar.DefaultItem

End Sub

Código fuente 481