26 noviembre 2006

Menus en Visual Basic .net y 2005

Hay dos tipos de menus que se pueden poner en aplicaciones hechos en Visual Basic .NET: el menú principal (MenuStrip) y el contextual (ContextMenuStrip). Como dijo Jack el destripador, vámonos por partes...
El menú principal es el que aparece en las aplicaciones abajo de la barra de la ventana (o sea, la tirita que dice "Archivo, Edición, etc."). Para crear uno, se tiene que arrastrar el objeto MenuStrip a la ventana. El ambiente de diseño cambia un poco: el "control" aparece en la parte inferior, fuera de la ventana y en la parte superior de la ventana (o forma) que estás creando, aparece una cajita que dice "Escriba aquí". La pantalla se ve algo así:


Al darle click sobre ese mensaje, te permite escribir un texto (el letrero del primer menú) y aparecen "huecos" para escribir más opciones.


Las siguientes imágenes muestran el efecto que tiene ir tecleando opciones del menú.


Visualmente quedó muy padre. Ahora, ¿qué hacemos? Programar las opciones se hace como con cualquier otro control. En este caso, le dí un doble click sobre la leyenda "Famous Star" y me aparece la ventana de código así:


Ya que solo es un ejemplo y no quiero complicarme la vida, solo voy a hacer que aparezca una ventana que diga lo que eligió, así que agrego el código que hace aparecer un MessageBox de la siguiente manera:


Al correr el programa y al seleccionar la hamburguesa "Famous Star", aparece esta ventana:


Fácil, ¿no? Ahora toca retar a un menu contextual a un duelo. Bueno, exageré. Pero de todos modos vamos a crear un menu contextual. Es muy similar al menú principal, con algunas pequeñas variantes que iré detallando. Para empezar, tenemos que añadir el control ContextMenuStrip a la ventana para que quede abajo de la ventana que estoy diseñando. Algo así:


Como observarás es casi idéntico que el menú principal, solo que aquí no puedes cambiar el texto ContextMenuStrip1. Ahora puedes escribir las diferentes opciones de la misma manera en que lo hice con el menú principal. A mí me quedó así:


No te vayas a sacar de onda: si le das click afuera de la ventana del menú contextual que aparece, desaparece. Para volverlo a abrir, haz un doble click sobre el ContextMenuStrip1 (suponiendo que no le has cambiado el nombre) que está abajo de la ventana.


Al hacerlo, vuelve a aparecer el menú para que puedas seguir trabajando en él.

Agregar código a las opciones del menú contextual es idéntico a la manera en que se agregan en el menú principal (cosa que ya expliqué más arriba). Pero para que funcione, tenemos que programar el momento en que queremos que aparezca ese menú. Lo más común es hacer aparecer un menú contextual al darle un click con el botón derecho del mouse. Así que hay que programar el evento MouseDown. Yo programé el evento MouseDown de una etiqueta (Label1) porque me interesa que abra cuando estoy sobre el label, pero si quieres que aparezca cuando le das click derecho sobre la ventana, pon este código bajo el evento MouseDown del Form.

Espero que se haya entendido porque lo estoy programando bajo Label1_MouseDown() y no bajo Form1_MouseDown() como probablemente harías en tu proyecto, así que ahora hay que decirle al programa que si el botón presionado es el derecho, que haga aparecer el menú contextual. Se supone que en otra parte ya programamos lo que va a hacer cada opción (de la misma manera en que lo hacíamos para las opciones del menú principal). Esto sería así:


¡Y ya! Usamos la función Show que sirve para mostrar el menú en las coordenadas dadas. En nuestro caso, le estamos pasando las coordenadas del lugar donde está el cursor de nuestro mouse (e.X y e.Y).

¡Hasta la próxima!
Publicar un comentario
Related Posts Plugin for WordPress, Blogger...