También aprenderemos cómo programar en los eventos de teclado, eventos del mouse y eventos de cierre del formulario.
1. Ciclo de Vida del Formulario
Cuando se ejecuta una aplicación conteniendo un formulario ocurren muchas cosas que como programadores debemos conocer para poder ejecutar las acciones correspondientes.
A continuación se detalla en orden de ocurrencia los procedimientos y eventos que se disparan cuando se trabaja con una aplicación Windows conteniendo dos formularios en Visual Basic .NET:
1. Primero se ejecuta el procedimiento New del formulario de inicio, también conocido como el "constructor". En el podemos inicializar componentes, como conexiones de acceso a datos, archivos, etc. En versiones anteriores de Visual Basic se llamaba evento "Initialize".
2. En segundo lugar, después de haberse inicializado el formulario, ocurre el evento Resize en el formulario de inicio, ya que este tiene un tamaño definido en la propiedad "Size".
3. Cuando se cargan los objetos a memoria ocurre el evento Load del formulario de inicio. En este podemos configurar propiedades de los controles o componentes de la aplicación, excepto trabajar con rutinas de enfoque de controles, por ejemplo: el método Focus().
4. Cuando el formulario aparece en pantalla se dispara el evento Activated del formulario de inicio. Este evento puede usarse para enfocar ciertos controles usando el método Focus().
5. Una vez enfocado el formulario empieza el proceso de pintado de la ventana desencadenándose el evento Paint. Este evento puede usarse para trabajar con métodos gráficos (System.Drawing).
6. Despúes de desencadenarse todos los eventos anteriores (sin interacción del usuario) recién el formulario se muestra en forma total y el usuario puede interactuar con éste pudiendo ocurrir eventos del teclado, de mouse, etc.
7. Cuando desde el formulario de inicio mostramos otra ventana (sea no modal, modal o dialogo) a éste le ocurre el evento Deactivate, es decir el foco pasa a otra ventana.
8. Si se regresa nuevamente al formulario de inicio, ocurrirán los eventos Activated y Paint en forma secuencial.
9. Si tratamos de cerrar el formulario, se desencadenará el evento FormClosing en donde tenemos opción a cancelar la salida, como veremos más adelante.
10. Si no se cancela la salida ocurre el evento FormClosed y es aquí cuando se descargan los controles de la memoria.
11. El penúltimo procedimiento en ocurrir es el Disposed, conocido como el "destructor" ya que en el se libera el formulario y los recursos creados por éste.
12. Finalmente, el último evento en ocurrir es el Deactivate, ya que el formulario de inicio ya no existe al descargarse de la memoria.
Sugerencia: Podemos pensar que el procedimiento New y el evento Load son indiferentes para inicializar variables o realizar acciones de inicio, lo aconsejable es hacerlo en el evento Load. De igual forma ocurre con el evento Closed y el procedimiento Disposed, lo aconsejable es programar las acciones de cierre en el evento Closed.
Ejemplo04:
Esta demostración tiene por objetivo reconocer los eventos que le suceden a un formulario durante su "ciclo de vida", desde que se crea hasta que se destruye y se desactiva. Para ello utilizaré el visual studio 2010
El ejemplo presenta un simple formulario con un botón de comando que muestra otro formulario. Se han programado los principales eventos del formulario de incicio y la salida se muestra en la "ventana de salida" de Visual Studio usando el método WriteLine() del objeto Debug. Para lo cual debemos realizar los siguiente pasos:
1. Crear una aplicación Windows en Visual Basic . NET
llamada Ejemplo04
2. Una
vez mostrado el formulario, realizamos un Click en el botón “Guardar” y almacenamos el proyecto en la ubicación
indicada
3. En la ventana del explorador de soluciones seleccionar el
archivo Form1 y en la ventana de propiedades cambiar la propiedad Filename a FRMEventos
4. En el diseñador de formularios Windows, arrastrar un
control Button del ToolBox hacia el formulario y configurar las propiedades,
tal como se muestra a continuación:
Objeto Propiedad Valor
FRMEventos Text
Prueba de Eventos
FRMEventos StartPosition CenterScreen
FRMEventos FormBorderStyle FixedSingle
FRMEventos
Size Width=290,
Height=290
FRMEventos
MaximizeBox False
FRMEventos
MinimizeBox False
Button1
Name
btnMostrarForm
Button1
Text Mostrar Otro Formulario
Button1
Size Width=150, Height=23
5. Seleccionar el formulario y presionar la tecla F7 o Click
Derecho y seleccionar “View Code”.
6. Escribir los
siguientes procedimientos manejadores de eventos asociados al Byval formulario,
eligiendo para ello de la lista de objetos “(FRMEventos Events)” y de la lista
de eventos el evento respectivo, luego cambiar el nombre del procedimiento y
programar como sigue:
7.
Escribir el procedimiento manejador de evento asociado
al botón, eligiendo para ello de la lista de objetos “btnMostrarForm” y de la
lista de eventos el evento “Click”, luego cambiar el nombre del procedimiento y
programar como sigue:
Todo el código queda de la siguiente manera:
8.
Grabar y luego ejecutar la aplicación con la tecla F5
Los eventos de teclado ocurren cada vez que se presiona una tecla sobre el formulario. Éstos son tres: KeyDown, KeyPress y KeyUp y dependiendo el tipo de tecla que se presione ocurren dos de ellos o los tres.
Nuestro teclado tiene dos tipos de teclas: simples y extendidas. Por ejemplo, si pulsamos una tecla simple como un digito o caracter alfabético, ocurren en orden secuencial los eventos KeyDown, KeyPress y KeyUp. En cambio, si pulsamos una tecla extendida como una tecla de función o de dirección, sólo ocurren los eventos KeyDown y KeyUp.
- Manejando Teclas Simples
El evento KeyPress ocurre al pulsar un carácter ASCII, los cuales pueden ser cualquiera de los 256 caracteres de la tabla ASCII, tales como caracteres no imprimibles (secuencias de escape), caracteres simbólicos (operadores), caracteres alfabéticos (A-Z, a-z), dígitos (0 al 9), o caracteres especiales.
A continuación las propiedades de la clase KeyPressEventArgs:
-Handled | Obitene o establece un valor que indica sí se controló el evento KeyPress.
-KeyChar | Obtiene el caractér correspondiente a la tecla presionada.
El evento KeyPress envía a la aplicación el caractér ASCII presionado mediante la propiedad KeyChar además podemos obtener su código mediante el método Asc() que devuelve el código ASCII asociado a dicho caractér.
2. Manejando Teclas Extendidas
Para manejar las teclas extendidas debemos escribir código en el evento KeyDown o KeyUp del formulario, el cual tiene parámetro de tipo KeyEventArgs que contiene información sobre el evento de tecla extendida.
La diferencia entre ambos eventos es que el KeyDown ocurre al pulsar una tecla extendida y el evento KeyUp ocurre al soltar dicha tecla.
Los eventos KeyDown y KeyUp ocurren al pulsar y soltar un caractér extendido respectivamente, los cuales pueden ser cualquiera de los 256 caracteres de la tabla ASCII y también las teclas de funciones (F1 a F12), teclas direccionales (inicio, fin, izquierda, derecha, arriba, abajo, página arriba y página abajo), etc.
A continución las propiedades de la clase KeyEventArgs:
-Alt | Obtiene un valor que indica si se presionó la tecla ALT.
-Control | Obtiene un valor que indica si se presionó la tecla CTRL.
-Handled | Obtiene o establece un valor que indica si se controló el evento.
-KeyCode | Obtiene el código de teclado para un evento KeyDown o KeyUp.
-KeyData | Obtiene los datos de tecla para un evento KeyDown o KeyUp.
-KeyValue | Obtiene el valor de teclado para un evento KeyDown o KeyUp.
-Modifiers | Indica qué combinación de teclas modificadoras (CTRL, MAYÜS y ALT) se presionaron.
-Shift | Obtiene un valor que indica si se presionó la tecla MAYÜS.
Los eventos KeyDown y KeyUp envían a la aplicación toda la información sobre el caractér extendido presionado, el cual puede ser una simple tecla o una combinación de teclas, por ejemplo: Control, Shift, Alt más un caracter.
Ejemplo02:
En el presente ejemplo se busca reconocer los eventos de teclado de un formulario, en especial el KeyPress y el KeyUp.
El ejemplo presenta un simple formulario en el cual al pulsar cualquier tecla se muestra un mensaje con la tecla pulsada, el evento y el código de la tecla. Utilizaré el Visual Studio 2010.
1.
Crear
una aplicación Windows en Visual Basic .Net llamada Ejemplo02
3.
En la ventana del explorador de soluciones
seleccionar el archivo Form1 y en la ventana de propiedades cambiar la
propiedad “FileName” a FRMTeclado
2. Una
vez mostrado el formulario, realizamos un Click en el botón “Guardar” y almacenamos el proyecto en la ubicación
indicada
4. En el diseñador de formularios Windows, seleccionar el formulario y configurar sus propiedades, tal como se muestra a continuación.
Objeto Propiedad Valor
FRMTeclado Text Pulsa cualquier tecla
FRMTeclado StartPosition CenterScreen
FRMTeclado FormBorderStyle FixedSingle
FRMTeclado MaximizeBox False
FRMTeclado MinimizeBox False
Objeto Propiedad Valor
FRMTeclado Text Pulsa cualquier tecla
FRMTeclado StartPosition CenterScreen
FRMTeclado FormBorderStyle FixedSingle
FRMTeclado MaximizeBox False
FRMTeclado MinimizeBox False
5. Seleccionar
el formulario y presionar la tecla F7 o Click Derecho y seleccionar “View
Code”.
6.
Escribir el procedimiento manejador de evento MostrarTeclaExtendida asociado al
formulario, eligiendo para ello de la lista de objetos “(FRMTeclado Events)”
y de la lista de procedimientos “KeyUp”
, luego cambiar el nombre del procedimiento a MostrarTeclaExtendida
7.
Escribir
el procedimiento manejador de evento MostrarTeclaSimple
asociado al formulario, eligiendo para ello de la lista de objetos “(FRMTeclado
Events)”
y de la lista de eventos el evento “keyPress”
,
luego cambiar el nombre del procedimiento y programar como sigue:
8. Grabar y luego ejecutar la aplicación con la tecla F5, pulsar una tecla para comprobar el ejemplo
3. Trabajando con Eventos del Mouse
Los eventos del mouse ocurren cada vez que se usa el mouse sobre el formulario. Éstos son 3: MouseDown, MouseUp y MouseMove.
El evento MouseDown ocurre al pulsar cualquier botón del mouse y el evento MouseUp ocurre al soltar dicho botón presionado. En cambio, el evento MouseMove ocurre al pasar el mouse sobre el formulario sin necesidad de presionar ningún boton.
Los tres eventos del mouse tienen un parámetro de tipo MouseEventArgs que contiene información sobre el evento del mouse, tal como el botón presionado, la coordenada donde se encuentra el puntero, etc.
A continuación las propiedades de la clase MouseEventArgs:
El evento MouseDown ocurre al pulsar cualquier botón del mouse y el evento MouseUp ocurre al soltar dicho botón presionado. En cambio, el evento MouseMove ocurre al pasar el mouse sobre el formulario sin necesidad de presionar ningún boton.
Los tres eventos del mouse tienen un parámetro de tipo MouseEventArgs que contiene información sobre el evento del mouse, tal como el botón presionado, la coordenada donde se encuentra el puntero, etc.
A continuación las propiedades de la clase MouseEventArgs:
Buttons : Obtiene el botón del mouse que se presionó
Clicks : Obtiene el número de veces que el botón del mouse se presionó y se soltó
Delta : Obtiene un recuento con signo que indica el número de pasos de trinquete que ha girado la rueda del mouse. Un paso de trinquete es una muesca de la rueda del mouse.
X : Obtiene la coordenada x del mouse
Y : Obtiene la coordenada y del mouse
Clicks : Obtiene el número de veces que el botón del mouse se presionó y se soltó
Delta : Obtiene un recuento con signo que indica el número de pasos de trinquete que ha girado la rueda del mouse. Un paso de trinquete es una muesca de la rueda del mouse.
X : Obtiene la coordenada x del mouse
Y : Obtiene la coordenada y del mouse
Ejemplo03:
En el presente ejemplo se usan los eventos del mouse que ocurren sobre el formulario, en especial el evento MouseMove.
El ejemplo presenta un simple formulario en el cual al pasar el mouse por éste se va mostrando las coordenadas en la barra de titulo y se va dibujando un circulo de radio 20. Utilizaré el Visual Studio 2010.
1. Crear una aplicación Windows en Visual Basic .NET llamada Ejemplo03
En el presente ejemplo se usan los eventos del mouse que ocurren sobre el formulario, en especial el evento MouseMove.
El ejemplo presenta un simple formulario en el cual al pasar el mouse por éste se va mostrando las coordenadas en la barra de titulo y se va dibujando un circulo de radio 20. Utilizaré el Visual Studio 2010.
1. Crear una aplicación Windows en Visual Basic .NET llamada Ejemplo03
2. Una vez mostrado el formulario, realizar un Click en el botón “Guardar” y almacenar el proyecto en una ubicación indicada.
3. En la ventana del explorador de soluciones seleccionar el archivo Form1 y en la ventana de propiedades cambiar la propiedad “FileName” a FRMPintado
4. En el diseñador de formularios Windows, seleccionar el formulario y configurar sus propiedades, tal como se muestra a continuación.
Objeto Propiedad Valor
Objeto Propiedad Valor
FRMPintado Text Mueve el puntero en el formulario
FRMPintado Position CenterScreen
FRMPintado Size 500;300
5. Seleccionar el formulario y presionar la tecla F7 o Click Derecho y seleccionar “View Code”.
6. Escribir el procedimiento manejador de evento DibujarCirculo asociado al formulario, eligiendo para ello de la lista de objetos “(FRMPintado Events)”
y de la lista de eventos el evento “MouseMove”
, luego cambiar el nombre del procedimiento a DibujarCirculo
y programar como se indica:
7. Grabar y luego ejecutar la aplicación con la tecla F5
8. Mover el puntero del mouse por el formulario sin presionar ningún botón y realizar un dibujo
Espero haber ayudado en algo. Adjunto los proyectos en los siguientes enlaces:
Ejemplo05 - Descargar
Ejemplo06 - Descargar
Ejemplo07 - Descargar
Hasta la próxima oportunidad!
No hay comentarios:
Publicar un comentario