7/25/2019 Fundamentos de Las Alplicaciones Windows
1/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
1/32
Fundamentos de las aplicaciones Windows
En el captulo anterior, se ha presentado la jerarqua de clases que contiene el
namespace Syst em. Wi ndows. For ms. En ste se estudian algunas de esas clases. Sin
embargo, antes es necesario tratar en profundidad la clase Cont r ol porque sus mtodos,propiedades y eventos sern comunes a todos los controles que deriven de esta clase.
Posteriormente, se estudiar la clase Formque es muy importante ya que se utiliza en
todas las aplicaciones para Windows.
La clase Control
Introduccin
En general, se denomina control a un objeto o instancia de una clase del namespaceSyst em. Wi ndows. For ms. Sin embargo, slo algunas de dichas clases derivan de la
clase Cont r ol . Por ejemplo, se dice que un objeto de la clase Col or Di al og es un
control, aunque no deriva de la clase Cont r ol . La clase Cont r ol proporciona la
funcionalidad bsica de todos los controles que derivan de ella. Muchas de estas clases
son, a su vez, clases base de otros controles (figura 15.1).
Figura 15.1: Jerarqua de la clase Cont r ol .
En la figura 15.2 se presenta un grfico con los controles que proporciona, por defecto,
la caja de herramientasde Visual Studio .NET.
Obj ect
Marshal ByRef Obj ect
Component
Cont r ol
Label Li st Vi ew Text BoxBase Pi ct ur eBox
Li nkLabel Text Box Ri chText Box
7/25/2019 Fundamentos de Las Alplicaciones Windows
2/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
2/32
Figura 15.2: Caja de herramientas
Otro tipo distinto de controles son los que se utilizan para el diseo Web. Este tipo de
controles son objetos de la clase Syst em. Web. UI . Cont r ol .
Propiedades
Las propiedades que ahora se van a estudiar son comunes a la mayora de los controles
porque las heredan directamente de la clase Cont r ol o bien las sobrescriben.
Se explican brevemente las ms utilizadas. Sin embargo, la clase Cont r ol tiene muchas
ms propiedades. Muchas de ellas se ha preferido explicarlas ms adelante para no
hacer en este punto una lista interminable de propiedades y eventos.
Anchor Especifica el comportamiento del control cuando su contenedor
cambia sus dimensiones.
BackCol or Define el color del fondo del control.Dock Permite que el control permanezca a una distancia constante
7/25/2019 Fundamentos de Las Alplicaciones Windows
3/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
3/32
anclado- de los bordes del formulario.Enabl ed Especifica si un control est habilitado o no para recibir entradas
del usuario. Cuando se inhabilita se dibuja en tonos grises.For eCol or Color del texto que muestra el control.Locat i on ( X, Y) Especifica las coordenadas de la esquina superior izquierda del
control respecto a su contenedor.Name Nombre del control. Puede ser usado como una referencia al
control.Par ent Especifica el padre del control.TabI ndex Especifica el orden o el lugar que ocupa el control al desplazarse el
foco por pulsacin del tabulador.TabSt op Indica si un control recibir o no el foco por la pulsacin del
tabulador.Tag Dato asociado al control que puede ser utilizado por el usuario.Vi s i bl e Oculta o presenta el control.
Observaciones:
Propiedades Anchor y Dock:
A veces, cuando se redimensiona una ventana o formulario dejan de verse algunos
controles. Si la posicin de stos es relativa a los lados o bordes se puede provocar un
autntico caos en su distribucin en el formulario. Si se disea una aplicacin
multiplataforma se desear colocar los controles del formulario en una ubicacin
relativa a los lados del formulario para que no haya problemas en plataformas
diferentes.
.NET proporciona dos propiedades que permiten solucionar de manera sencilla este
problema: Anchor y Dock.
Anchor es una propiedad que especifica cmo se comportar un control cuando el
formulario que lo contiene se redimensiona. Esta propiedad determina si el control se
redimensiona en proporcin al cambio de dimensiones en el formulario o bien si
permanece del mismo tamao siendo constante la posicin relativa respecto a algunos
de los lados del formulario.
Dock es una propiedad vinculada a Anchor . Especifica si un control permanece
anclado a una distancia constante- de los lados del formulario. Si se redimensionaste, el control contina a esa misma distancia de ese lado. Ms adelante, en este mismo
captulo, se hace un ejemplo que ayudar a comprender mejor estas propiedades.
Metodos
Los mtodos ms importantes de la clase Cont r ol son:
Focus( ) Hace que el control obtenga el foco.Hi de( ) Oculta el control.
Show( ) Despliega el control en pantalla.
7/25/2019 Fundamentos de Las Alplicaciones Windows
4/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
4/32
Eventos
Los evento sms importantes son:
Cl i ck Ocurre cuando se pulsa sobre un control con el ratn. En algunos casos,
tambin ocurre cuando el usuario pulsa la tecla ENTER y el controltiene el foco.
Doubl eCl i ck Ocurre cuando se pulsa dos veces consecutivassobre un control.Dr agDr op Sucede cuando se finaliza un proceso Drag-and-Drop(arrastrar y soltar)
con el ratn sobre un control, es decir cuando un objeto ha sido
arrastrado hasta un control y el usuario libera el ratn.Dr agEnt er Ocurre cuando se arrastraun objeto y se introduceen un control.Dr agLeave Ocurre cuando se sale deun control arrastrando un objeto.Dr agOver Ocurre al realizar la operacin de arrastre sobreel control.KeyDown Ocurre cuando tiene el foco el control y se comienza a pulsar o
presionar una tecla. Este evento ocurre siempre antes de KeyPressy de
KeyUp.KeyPr ess Ocurre justo al pulsar una tecla sobre el control que en ese momento
tiene el foco. Sucede justo despus de KeyDown, pero antes de KeyUp. La
diferencia entre este evento y los otros dos es que mientras KeyDown y
KeyUppasan el cdigo de la tecla que ha sido pulsada, en KeyPr essse
pasa el valor correspondiente a la tecla pulsada.KeyUp Ocurre en el control que tiene el foco cuando una tecla se libera. Ocurre
siempre despus KeyDowny KeyPr ess.MouseDown Ocurre cuando se pulsa con el ratn sobre el control. No es lo mismo
que el evento Cl i ck, porque MouseDownocurre justo cuando se pulsa el
botn y antes de ser liberado.MouseUp Ocurre cuando el ratn se ha pulsado previamente sobre un control y se
libera.MouseMove Ocurre continuamente cuando se mueve el ratn sobre el control.Pai nt Ocurre cuando se pinta o redibuja el control.Val i dat ed Ocurre cuando un control con la propiedad CausesVal i dat i ona true
est a punto de perder el foco. Ocurre despus de que el evento
Val i dat i ngfinaliza e indica que se ha completado la validacinVal i dat i ng Ocurre cuando un control con la propiedad CausesVal i dat i ona true
est a punto de perder el foco. El control que va a ser validado es el
control que pierde el foco y no el que lo recibe.
Observaciones
Sobre la pulsacin de una tecla:
Los eventos KeyDown, KeyPr essy KeyUppermiten mantener un control total sobre las
entradas en un control. KeyDowny KeyUpreciben como parmetro el cdigode la tecla
que se ha pulsado en el teclado. Esto permite conocer si se ha pulsado algunas de las
teclas especiales como Cont r ol , Al t , Mayscul a o alguna de las teclas de funcin,
etc...
7/25/2019 Fundamentos de Las Alplicaciones Windows
5/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
5/32
KeyPr essrecibe el carctercorrespondiente a la tecla pulsada. As, con este evento, se
puede distinguir entre la letra b y la letra B. Esto es muy til cuando se pretende
filtrar las entradas del teclado por ejemplo, cuando se desea que las entradas en una
caja de texto sean numricas-.
En el espacio dedicado al estudio del controlTexBoxse trata con detalle estos eventos yse realizar un ejemplo.
7/25/2019 Fundamentos de Las Alplicaciones Windows
6/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
6/32
La clase Form
Introduccin
Las ventanas o formularios -forms en ingls- juegan un papel fundamental en las
aplicaciones para Windows.
Desde el punto de vista del usuario, una aplicacin es una ventana formulario a partir
de ahora- que se conoce como formulario o ventana principal de la aplicacin junto
conen ocasiones- uno o ms formularios secundarios, ventanas hijas o cuadros de
dilogo.
Desde el punto de vista del programador, un formulario una ventana desplegada en
pantalla- no es ms que un objeto de una clase que deriva de la clase Form. Para ejecutar
una aplicacin es necesario crear un objeto o instancia de esa clase. Este objeto se le
pasa al mtodo esttico Run( ) de la clase Appl i cat i on. Cuando desde el cuerpo del
mtodo Mai n( ) se ejecuta el mtodo Run( ) , se presenta en pantalla la ventana asociada a
esta clase. Los controles de un formulario son objetos o instancias de diversas clases
asociadas a diversos controles, campos de esa clase.
Propiedades
La clase Formderiva de las clases Cont r ol y de Cont ai ner Cont r ol y por lo tanto
heredar de ellas muchas de las propiedades y eventos estudiados anteriormente.
Las propiedades de un formulario configuran su apariencia, comportamiento y estilo.
Casi todas ellas pueden definirse en tiempo de diseo en la ventana de propiedadesdel
formulario o modificarse en tiempo de ejecucin.
Cuando se crea un nuevo proyecto para Windows, en la fase de diseo el IDE visualiza
un primer formulario que ser la ventana principal de la aplicacin cuando sta se
ejecute. Para modificar o definir las distintas propiedades de un formulario en tiempo de
diseo, trabaje desde la ventana de propiedades. Se ha de tratar de tener seleccionado
el formulario, porque si es otro el componente o control que tiene el foco en ese
momento, se estar modificando las propiedades de ese control y no las del formulario.
Esto es as porque la ventana de propiedades est siempre asociada al control quetiene en un determinado momento el foco. Tambin podra seleccionar la ventana por su
nombre propiedad Name- a travs del ComboBox situado en la parte superior de la
ventana de propiedades.
Este formulario contiene un rejilla de puntos que ayuda al programador en el diseo
grfico del formulario. Las propiedades Dr awGr i d, Gr i dSi ze, Locked, SnapToGr i d
configuran esa rejilla. Dr awGr i d indica si se dibuja o no el grid de posicionamiento,
Gr i dSi ze define el tamao de ese grid-, Locked especifica si se puede mover o
redimensionar el control- y SnapToGr i d indica si la posicin del control se ajustar al
grid.
7/25/2019 Fundamentos de Las Alplicaciones Windows
7/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
7/32
La propiedad ms importante es Name, que es el nombre del formulario y se puede
utilizar como una referencia a ese formulario.
En Microsoft Windows 2000, se puede controlar el nivel de opacidad otransparencia de cualquier ventana que se disea. Estos formularios sern
totalmente opacos cuando la aplicacin se ejecute en otro sistema operativo.Para controlar la transparencia de un formulario, se ha de cambiar en la ventana
de propiedades la propiedad Opaci t y a un valor entre 0. 0 (transparencia
absoluta) y 1. 0(opacidad completa).
Puede tambin cambiarse esta propiedad en tiempo de ejecucin, asignando una
determinada cantidad a esta propiedad. Por ejemplo:
publ i c voi d Mi Met odo( ){
f or mul ari oSemi Tr anspar ent e. Opaci t y = 0. 56;}
Adems de stas, se dispone de otras muchas propiedades que ayudarn al programador
en el diseo de su aplicacin:
Las propiedades ms importantes relacionadas con la aparienciadel formulario
son:
BackCol or : es el color del fondo del formulario.
Por defecto, el color que se elija pasa, a todos los controles que se incluyan
en el formulario, ya que se considera que todos los controles heredan las
propiedades del formulario que los contienen. Si se desea que el controltenga un color distinto, basta con cambiar el color de la propiedad
BackCol or del control.
Backgr oundI mage: es la imagen del fondo del control.
Cursor : es el cursor que aparece cuando el ratn se sita o pasa sobre el
control
Font : fuente del texto del control: tipo de letra, tamao, estilo y efectos
For mBorder St yl e: Controla la apariencia del borde del formulario e incluso
si es ventana de dilogo.
Text : texto del ttulo del formulario.
Propiedades relacionadas con el comportamientodel formulario:
Al l owDr op: indica si el control recibir notificaciones drag&drop
Cont ext Menu: men que se muestra al pulsar con el botn derecho sobre el
formulario.
Tag: dato definido por el usuario asociado al control.
Propiedades relacionadas con el diseodel formulario:
Aut oScal e: Indica si se ajusta la fuente de la pantalla.
Aut oScr ol l : Indica si aparecern las barras de desplazamiento de manera
automtica cuando se desplaza el cursor fuera del rea cliente.
Aut oScr ol l Mar gi n: Margen alrededor del control durante el autoscroll
Aut oScrol l Mi nSi ze: Mnimo tamao para la regin autoscroll.
7/25/2019 Fundamentos de Las Alplicaciones Windows
8/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
8/32
DockPaddi ng: Determina el tamao del borde de los controles acoplados.
Maxi munSi ze/ Mi ni munSi ze: Tamaos mximo y mnimo del formulario que
pueden ser redimensionados.
Si ze: Tamao del control.
St art Posi t i on: Posicin inicial del formulario.
Wi ndowsSt at e: Estado inicial del formulario.
Propiedades relacionadas con el estilo de la ventana:
Cont r ol Box: Indica si el formulario tiene el men de control del sistema (men
de la parte superior izquierda y los tres botones, maximizar, minimizar y cerrar)
Hel pBut t on: Indica si el formulario tiene un botn de ayuda en la barra de
ttulo.
I con: Es el icono del formulario.
I sMdi Cont ai ner : Indica si el formulario es MDI.
Maxi mi zedBox y Mi ni mi zedBox: Indica si aparecen los botones de control de
maximizar y minimizar. Menu: Es el men asociado al formulario. Debera ser del tipo MainMenu.
Opaci t y: Indica en tanto por cien el grado de opacidad del formulario.
ShowI nTaskBar : Indica si el formulario aparece en la barra de tareas.
TopMost : Indica si el formulario no se oculta al perder el foco.
Tr ansparenceKey: Color que ser transparente cuando se dibuje en el
formulario.
Adems existen otras tres importantes propiedades :
Accept But t on. Indica el botn al que se traslada el evento click cuando sepresiona ENTER.
Cancel But t on: Idem con el botn ESCAPE.
KeyPrevi ew: Indica si los eventos de teclado sern registrados antes en el
formulario.
Observaciones:
Propiedad TopMost:
Se puede dotar a una ventana de la caracterstica de estar siempre visible. Por ejemplo,
puede ser interesante para la ayuda o para una caja de herramientas estar siempre
visible. La propiedadTopMost permite que un formulario sea siempre visible.
Puede hacerse esto en tiempo de ejecucin:
mi Vent anaSi empr eVi si bl e. TopMost = t r ue;
Configuracin del TabOrder (Orden de tabulacin)
Cuando un formulario o un cuadro de dilogo contienen varios controles, el usuario
espera que si pulsa la tecla Tab, el foco se vaya desplazando de un control a otro. Para
7/25/2019 Fundamentos de Las Alplicaciones Windows
9/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
9/32
ello, todos los controles que pueden recibir el foco tienen las propiedades TabStop y
TabIndex. El primero es una propiedad booleana que indica si se desea configurar el
control para recibir el foco o no. La segunda establece el orden relativo segn se vaya
trasladando el foco de un control a otro.
Por ejemplo:
t ext o. TabSt op = t r ue;t ext o. TabI ndex = 4;
indica que el control textoocupa el quinto lugar en la secuencia delTabCont r ol .
Visual Studio .NET proporciona una sencilla herramienta para configurar esta
propiedad de una manera sencilla, visual y rpida. Para desplegarla, cuando se est
trabajando en la ventana de diseose selecciona Ver/Orden de Tabulaciny aparece
la misma ventana pero con un pequeo nmero junto a cada control que indica la
secuencia o el orden del foco en los controles del formulario. Para cambiar estosvalores, pulse en el orden que desee. Se puede observar que los controles que
pertenecen a un Gr oupBox funcionan como un grupo y con orden diferente y aparte.
Para salir de la herramienta hay que volver a elegir la misma opcin de men:
Ver/Orden de Tabulacin (figura 15.3).
Figura 15.3 : TabOrder Wizard
Eventos
Algunos de ellos son heredados de otras clases o incluso pertenecen a otras clases. Sin
embargo se sealan aqu porque son muy utilizados cuando se trabaja con formularios.
Show( ) : presenta el formulario.
ShowDi al og( ) : presenrta en pantalla un formulario de dialogo modal.
7/25/2019 Fundamentos de Las Alplicaciones Windows
10/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
10/32
Hi de( ) : lo oculta.
Cl ose( ) : lo cierra.
Appl i cat i on. Exi t ( ) : concluye la aplicacin.
Appl i cat i on. Run( ) : visualiza el formulario que se le pasa como parmetro.
Tipos de formularios
En C# los formularios comunes ventanas redimensionables o no- las cajas de dilogo,
las cajas de herramientas, etc, son objetos o instancias de clases que derivan de la clase
Form. Su aspecto o estilo lo define la propiedad For mBorder St yl e. Adems, esta
propiedad afecta a la barra de ttulo y a los botones de control que aparecen en ella. Los
distintos valores que puede tomar esta propiedad son los siguientes:
None Ningn borde especialFi xed3D Aspecto tridimensional. Puede incluir el men de control, los
botones para maximizar y minimizar en la barra de ttulo.Fi xedDi al og Se usa para cajas de dilogo. Los formularios con esta
propiedad no son redimensionables y puede incluir el men de
control, los botones para maximizar y minimizar en la barra de
ttulo.Fi xedSi ngl e Formulario no redimensionable y que puede incluir el men de
control, los botones para maximizar y minimizar en la barra de
ttulo. Slo es redimensionable cuando se utilizan los botones de
la barra de ttulo de maximizar y minimizar. Crea un borde con
una simple lnea.Fi xedTool Wi ndow Se usa para las ventanas de herramientas. Despliega una ventana
no redimensionable con un botn Cl ose y un texto en la barrade ttulo. Este formulario no aparece en la barra de tareas de
Windows.Si zabl e Es el valor por defecto. Es el valor ms frecuente para los
formularios principales. Redimensionable. Puede incluir un
control de men, los botones de maximizar y minimizar, la
barra de ttulo.Si zabl eTool Wi ndow Se usa para las ventanas de herramientas. Presenta una ventana
redimensionable con un botn Cl ose y un texto en la barra de
ttulo con una fuente reducida en tamao. El formulario no
aparece en la barra de tareas de Windows.
Todos los estilos excepto None, mantienen el botn Cl oseen el lado derecho de
la barra de ttulo.
La eleccin de determinados estilos controlar la presencia de los botones Mi ni mi zey
Maxi mi zeen la barra de ttulo. Puede, no obstante, cambiarse la funcionalidad de estos
botones.
Adems e independientemente de lo dicho anteriormente los botones para maximizar y
minimizar pueden aparecer o no en el formulario. Para ello, se deben manipular las
propiedades correspondientes en la ventana propiedades del formulario. As, parainhabilitar los botones de maximizar o minimizar en un determinado formulario, se ha
7/25/2019 Fundamentos de Las Alplicaciones Windows
11/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
11/32
de escoger en la ventana de propiedadesdel formulario Mi ni mi zeBoxo Maxi mi zeBox,
y asignarles f al se.
Trabajando con aplicaciones de varios formularios
A veces, en una aplicacin es necesario utilizar ms de un formulario adems delformulario principal-. Es muy sencillo aadir cajas de dilogo u otros formulario.
Si se desea aadir un formulario que herede de la clase For m:
En la ventana Explorador de Soluciones, pulse con el botn derecho del ratn
en el proyecto y elija la opcin Agregar / Agregar formulario de Windows.
Si se quiere aadir un formulario que herede de una clase Formpreviamente
creada:
En la ventana Explorador de Soluciones, pulse con el botn derecho del ratn
en el proyecto y elija Agregar / Agregar formulario hererado.
Tambin se puede aadir un formulario desde el men principal
Proyecto/Agregar formulario de Windows o Proyecto/Agregar formulario
hererado.
Cuando una aplicacin se ejecuta, se presenta en pantalla el formulario que se disea en
primer lugar. Si desea que la aplicacin comience con otro formulario se deben seguir
los siguientes pasos:
En la ventana Explorador de Soluciones, haga click con el botn derecho en elproyecto y elija Propiedades.
En la ventana que se abre elija Propiedades Comunes/ General y seleccioneel formulario por el que se desea comenzar sealndolo en la lista que se
despliega en la lista Objeto Inicial (ver Figura15.4).
7/25/2019 Fundamentos de Las Alplicaciones Windows
12/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
12/32
Figura 15.4: Configuracin del formulario inicial de una aplicacin
A veces, en el diseo de aplicaciones complejas, es difcil tener acceso a todos los
formularios de un proyecto.
Para ver los formularios del proyecto: En la ventana Explorador de soluciones,
haga doble-click en el formulario.
Para ver el cdigo de un formulario: En la ventana Explorador de soluciones,
seleccione el formulario que desee y haga click con el botn derecho y elija la
opcin Ver cdigo, o bien, haga click con el botn derecho del ratn sobre la
ventana de diseodel formulario y elija Ver cdigo.
Formularios modales y no modales
Los formularios pueden ser modales o no modales. Un formulario o caja de dilogo
modales aquel que tiene que ser cerrado para continuar trabajando con la aplicacin
Las cajas de dilogo que despliegan mensajes deberan ser siempre modales. Por
ejemplo, la caja de dilogo Ayuda/Acerca de Microsoft VisualStudio .NET en el
men principal es un ejemplo de caja de dilogo modal. Los MessageBoxson tambin
formularios modales y sern tratados en detalle ms adelante.
Los formularios no modales permiten trabajar entre dos formularios de la misma
aplicacin sin cerrarlos. Este tipo de formularios son difciles de controlar, porque no se
conoce cual ser el orden de acceso por parte del usuario a cada uno de ellos. Sin
embargo, hay ocasiones en la que esto es muy til. Las ventanas de herramientas son
7/25/2019 Fundamentos de Las Alplicaciones Windows
13/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
13/32
formularios de este tipo. Por ejemplo, la caja de dilogo del men de Visual Studio
Edicin / Buscar y reemplazar/ Buscar, es otro ejemplo de formulario no modal.
Para presentar un formulario como una caja de dilogo modal, los pasos que se
deben seguir son los siguientes:
Llamar al mtodo ShowDi al og( ) . Por ejemplo,
Form caj aAbout = new Form( ) ;caj aAbout . ShowDi al og( ) ;
El mtodo ShowDi al og( ) de la clase Form tiene un argumento opcional, owner ,
que puede ser utilizado para especificar la relacin padre-hijo de un formulario.
Por ejemplo, en el cdigo del formulario principal se puede pasar t hi scomo el
propietario de la caja de dilogo para establecer el formulario principal como
propietario o padre:
For m f = new For m( ) ;f . ShowDi al og( t hi s );
Si un formulario se presenta como modal, el cdigo siguiente a la instruccin
f . ShowDi al og( t hi s) ;
no se ejecuta hasta que dicha ventana se cierre.
Para presentar un formulario como una caja de dialogo no modal, debe llamarse al
mtodo Show( ) :
For m f = new For m( ) ;f . Show( ) ;
Ejemplo: trabajando con distintos eventos en un formulario
Esta aplicacin permite comprobar los eventos que se van produciendo e ilustra bien
algunos de los eventos de la clase Cont r ol .
Cree una nueva aplicacin para Windows denominada Event osVari os.
VisualStudio genera una aplicacin, con un formulario llamado For m1, en un ficherollamado Form1. cs .
A continuacin, modifique el nombre del formulario: para ello en la ventana Vista
de clases, pulse sobre For m1 (Figura 15.5). En la ventana de propiedades, cambie
el nombre del formulario For m1a For mul ar i o (Figura 15.6).
7/25/2019 Fundamentos de Las Alplicaciones Windows
14/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
14/32
Figura 15.5. Vista de clases Figura 15.6. Ventana de propiedades
A continuacin, cambie el nombre del fichero Form1. cs a For mul ar i oPr i nci pal . cs;
pulse en el explorador de soluciones sobre el formulario For mul ar i o y
posteriormente, en la ventana de propiedades, cambie la propiedad nombr e de
ar chi vo a For mul ar i oPr i nci pal . cs. Tambin podra haberlo hecho con la opcin
Archivo/Guardar For m1. cs como...For mul ar i oPr i nci pal . cs
Not a: En r eal i dad en l a vers i n de Vi sual St udi o, hay que cambi armanual ment e el nombr e del f ormul ar i o del que l a apl i caci n hace unai nst anci a, es deci r se cambi a l a l nea
Appl i cat i on. Run( new For m1( ) ) ;
Por l a l nea:
Appl i cat i on. Run( new For mul ar i o( ) ) ;
OJ O COMPROBAR ESTO EN LA VERSI ON FI NAL PORQUE ES POSI BLE QUE SE HAYAARREGLADO
Guarde la aplicacin y complela para comprobar que no d ningn error.
Cambie la propiedadText del formulario a For mul ar i o Pr i nci pal .
Coloque dos cajas de texto en el formulario, con sus propiedades Name a
t xEventos1 y t xEventos2 respectivamente y la propiedad Text de ambas vaca
(figura 15.7).
5. Site un botn en el centro del formulario, con su propiedad Text a Acept ar y su
propiedad Namebt nAcept ar (figura 15.7).
7/25/2019 Fundamentos de Las Alplicaciones Windows
15/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
15/32
Figura 15.7. Formulario principal del proyecto Event osVar i os
A continuacin, se van a manejar algunos eventos sobre el botn, sobre la caja de
texto y sobre el formulario.
a) Eventos del botn btnAcept ar :
Seleccione el botn btnAcept ar pulse una sola vez sobre l- y haga doble
Click sobre los eventos MouseEnt er , MouseLeave, MouseUp y MouseDown en laVentana de propiedades.Aada el cdigo que se indica para cada evento:
prot ect ed voi d btnAcept ar_MouseUp(obj ect sender , Syst em. Wi nFor ms. MouseEvent Ar gse){
t xEvent os1. Text ="Event o Mouse Up del bot on";}
prot ected voi d bt nAcept ar_ MouseLeave ( obj ect sender , Syst em. Event Ar gs e){
t xEvent os1. Text ="Event o Mouse Leave del bot on" ;}
prot ected voi d btnAcept ar_ MouseEnter ( obj ect sender , Syst em. Event Ar gs e){
t xEventos1. Text ="Event o Mouse ent er del bot on" ;}
prot ect ed voi d bt nAcept ar_MouseDown (obj ect sender , MouseEvent Ar gs e){
t xEventos1. Text="Event o Mouse Down del boton" ;}
b) Eventos sobre el formulario:
Observe cmo se puede obtener la informacin que llega encapsulada en el objeto e
de la clase MouseEvent Ar gs, en uno de los argumentos de la funcin miembroFor mul ar i o_MouseMove. Site una nueva caja de texto en el formulario, con la
7/25/2019 Fundamentos de Las Alplicaciones Windows
16/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
16/32
propiedad Name t xEventos3, sin texto en la caja propiedad Text vaca-. A
continuacin, pulse sobre el formulario, y en la ventana de propiedades, en
eventos, haga doble-click sobre el evento MouseMove. Se abre la ventana del cdigo
correspondiente al formulario. Escriba el siguiente cdigo:
prot ect ed voi d For mul ar i o_MouseMove( obj ect sender , Syst em. Wi nFor ms. MouseEvent Ar gse){
t xEvent os3. Text ="Coor denadas: ( x = " + e. X + " , y = " + e. Y + " ) " ;}
Para entender el cdigo anterior y aunque se estudiar con ms detalle ms adelante, es
necesario adelantar ahora que un objeto e de la clase MouseEvent Ar gs encapsula
informacin sobre el origen del evento: el botn presionado, coordenadas del puntero,
etc. Tiene las siguientes propiedades:
MouseBut t on But t on; / / i ndi ca qu botn se ha pr esi onadoi nt Cl i cks; / / n de cl i cks de r at n
i nt X; / / Coor denadas x e y del punt ero del r atni nt Y;
Por ltimo, se puede ver cundo se produce el evento Resi ze del formulario.
Para ello, pulse sobre el formulario, y en la ventana de propiedades en
eventos, haga doble click sobre el evento Resi ze y escriba una frase
significativa de este evento en el cdigo del mtodo manejador del evento. Por
ejemplo:
pr ot ect ed voi d For mul ar i o_Resi ze ( obj ect sender , Syst em. Event Ar gs
e){
t xEvent os2. Text="Event o resi ze del f or mul ar i o";}
Compile y ejecute la aplicacin.
Observe los distintos eventos que se han manejado. Modifique tambin las
dimensiones del formulario.
7/25/2019 Fundamentos de Las Alplicaciones Windows
17/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
17/32
La clase Button
En C# los controles Radi oBut t on, CheckBut t on y But t on son botones. Esto es as
porque cada uno de ellos deriva directamente de la clase But t onBase, como indica la
figura 15.8:
Figura 15.8
En este captulo se estudian slo las propiedades y eventos de la clase But t on, dejando
las otras dos para un captulo posterior.
Propiedades
Como en los anteriores casos, no pretende dar una lista exhaustiva de propiedades de la
clase sino de las ms importantes y usuales. No se citan aqu las que se heredan de la
clase Cont r ol , que son tambin propiedades de la clase But t on.
Fl at Si ze Define la representacin o el estilo grfico del botn.I mage Permite especificar una imagen para el botn.I mageAl i gn Especifica la localizacin relativa de la imagen en la superficie del
botn.Text Texto del botn
Eventos
La clase But t onhereda los eventos de la clase Cont r ol . El ms utilizado de todos ellos
es Cl i ck. Ocurre al presionar el botn izquierdo del ratn y levantarlo o liberarlo
mientras el puntero del ratn est sobre el mismo control donde se inici la pulsacin.
Esto quiere decir que si se presiona sobre un control con el botn izquierdo del ratn y a
continuacin con el botn pulsado, es decir, arrastrando- se desplaza fuera del
control y posteriormente se libera el ratn, no se producir el evento click. Por otro lado,
si un botn tiene el foco y el usuario presiona la tecla ENTER se produce un evento
click sobre ese control. Esto sucede as siempre que ningn control tenga la propiedad
Accept But t onaTr ue.
Cont r ol
But t onBase
But t on CheckBox Radi oBut t on
7/25/2019 Fundamentos de Las Alplicaciones Windows
18/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
18/32
Ejemplo: trabajando con botones
a) Cree un nuevo proyecto denominado Proyect oBot ones.
b)
Cambie el nombre de la clase del formulario de For m1a For mul ar i oBotones.
pulsando sobre el formulario For m1y en la ventana de propiedadescambie la
prodiedad Name a For mul ar i oBotones. Desde la ventana Explorador desoluciones cambie el nombre del fichero fuente Form1. cs a
For mul ari oBotones. cs.
Cambie la lnea de cdigo en el fichero For mul ar i oBotones. cs
Appl i cat i on. Run( new For m1( ) ) ;
a
Appl i cat i on. Run( new For mul ar i oBot ones( ) ) ; OJ O. Sol o bet a????
Cambie la propiedadText del formulario y djela en blanco.
c) Coloque tres botones en el formulario con las siguientes propiedades:Name: bt nAcept arText : Acept ar
Name: bt nCancel arText : Cancel ar
Name: bt nSal i rText : Sal i rI mage: C: \ Ar chi vos de pr ogr ama\Mi cr osof t Vi sual St udi o. NET\ Common7\ Gr aphi cs\ i cons\Mi sc\ SECUR08. I COI mageAl i gn: Mi ddl eRi ght
Figura 15.9
En las propiedades del formulario cambie las siguientes propiedades:
Accept But t on: bt nAcept arCancel But t on: bt nCancel ar
7/25/2019 Fundamentos de Las Alplicaciones Windows
19/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
19/32
I con: C: \ Ar chi vos de pr ogr ama\ Mi cr osof t Vi sualSt udi o. NET\ Common7\ Gr aphi cs\ i cons\ El ement s\ Ear t h. I CO
Con la asignacin de las propiedades Accept Butt ony Cancel But t ona los botones
btnAcept ar y btnCancel ar , se logra que cuando se pulsa la tecla ENTERocurra el
evento Cl i ck en el btnAcept ar y que si se pulsa ESCAPE, se produzca el evento
Cl i cken el botn btnCancel ar . En resumen, el efecto de pulsar sobre cada uno de
los botones es el mismo que el de pulsar las teclas ENTERo ESCAPE.
La propiedad I con, asigna un icono al formulario.
d) A continuacin se escribe el cdigo que manejar el evento del botn
btnCancel ar , pero cambiando el nombre del mtodo que el entorno propone
por defecto. Para ello, en la ventana de propiedades del btnCancel ar , pulse
sobre el icono correspondiente a eventos. Escriba el nombre que desee para elevento por ejemplo, met odoCl i ckCancel ar - en la parte derecha del evento
Cl i cky realice un doble click sobre el nombre del evento. Se puede observar
que se abre la ventana de cdigo, que ha registrado el evento en el auditor y que
adems dispone las cosas para que se pueda escribir el cdigo directamente. En
cualquier momento puede modificar el nombre del mtodo, bien desde la
ventana de cdigo o bien desde la ventana de propiedades. Escriba el siguiente
cdigo en el mtodo.
pr i vat e voi d metodoCl i ckCancel ar ( obj ect sender , Syst em. Event Ar gs e){
t hi s. BackCol or =Col or . Bl ue;t hi s. Text="Ha pul sado el bot on cancel ar " ;t hi s. bt nAcept ar . BackCol or =Col or . Red;
}
Se puede observar que alguna propiedades se heredan de padres a hijos. En este
caso, al modificar el color del fondo del formulario se cambian tambin las de todos los
controles que sean hijos de ese control. Slo si se cambia la propiedad en el control
bien en tiempo de diseo o bien, como se ha hecho en este ejemplo, en tiempo de
ejecucin- deja de ser la misma de la del formulario. Esto pasa con otras propiedades
como el tipo de letra, color de la letra, color de fondo...
7/25/2019 Fundamentos de Las Alplicaciones Windows
20/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
20/32
Figura 15.10
Aadiendo manejadores o auditores de eventos:
Para tratar el evento Cl i ck de btnAcept ar se pueden hacer las cosas, paso a paso
como en el apartado anterior- o bien se puede hacer doble click en tiempo de diseo
sobre el botn. Visual Studio traslada el foco y el cursor a la ventana de cdigo. Esto
sucede as con todos los controles y se registra el evento por defecto de ese control, quees el evento ms comn o utilizado de dicho control.
Adems, se escriben de manera automtica varias lneas de cdigo.
La primera de ellas en el mtodo I ni t i al i zeComponent ( ) que registra el evento
Cl i ck. Por ejemplo, si se hace esta operacin en el botn btnAcept ar , la lnea que se
aade es:
t hi s. bt nAcept ar . Cl i ck += newSystem. Event Handl er ( t hi s. bt nAcept ar _Cl i ck);
Si no la encuentra esta lnea, pulse sobre el signo +situado a la izquierda de la lnea:
pr i vat e voi d I ni t i al i zeComponent ( )
y se descomprimir el cdigo correspondiente a ese mtodo. En l se encontrar la lnea
anterior.
bt nAcept ar . Cl i ck hace referencia al evento Cl i ck del botn btnAcept ar . Por otro
lado, se crea un objeto de la clase Syst em. Event Handl er para que manipule este
evento a travs del mtodo que se le pasa como parmetro a su constructor, que es
bt nAcept ar _Cl i ck. t hi ses la referencia al formulario actual. El nombre que proponeVisual Studio para el mtodo manejador est compuesto por el nombre del control que
7/25/2019 Fundamentos de Las Alplicaciones Windows
21/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
21/32
es fuente del evento, seguido del nombre el evento. Como anteriormente se ha hecho, se
puede cambiar el nombre en la ventana de propiedades.
+= indica que se est registrando el evento situado en el lado izquierdo en el auditor que
manipular dicho evento y que se crea en la parte derecha de la expresin.
Adems de esta lnea se aade en la parte final del cdigo las siguientes lneas:
pr i vat e voi d bt nAcept ar _Cl i ck(obj ect sender , System. Event Ar gs e){
}
El cdigo que el programador escriba en este mtodo es el que se ejecutar cuando se
produzca el evento Cl i ck del botn. El programador slo tiene que escribir dicho
cdigo en el cuerpo del mtodo.
Observe que se pasan dos parmetros al mtodo manejador del evento, que son unobjeto que encapsula el objeto fuente del evento y otro que encapsula el propio evento:
a) sender : es un objeto de la clase obj ect . Es un referencia al control donde se ha
producido el evento. En este caso, sender es el botn btnAcept ar , pero en
otros casos este mtodo puede ser compartido por varios controles y se puede
utilizare este parmetro para chequear, en tiempo de ejecucin, el control que ha
producido el evento. Ms adelante se utiliza esta tcnica en varios ejemplos.
b) e: este objeto encapsula la informacin sobre el evento que se ha producido. En
este caso, no se utiliza.
Escriba el siguiente cdigo para tratar el evento Cl i ck, en el interior del cuerpo del
mtodo anterior.
t hi s. Text ="Se ha pul sado el botn Acept ar " ;
Con esa lnea se asigna a la propiedad Text del formulario -t hi s- la cadena de la parte
derecha de la expresin.
Siga los mismos pasos para aadir un mtodo que manipule el evento Cl i ckdel botn
bt nSal i r y escriba la siguiente lnea en el cuerpo del mtodo para salir de la
aplicacin:Appl i cat i on. Exi t ( ) ;
Exi t ( ) es un mtodo esttico de la clase Appl i cat i on que hace que la aplicacin
termine o se cierre.
Las clases Label y LinkLabel
El propsito de estos dos controles es presentar una etiqueta con objeto de exponer una
informacin en el formulario. Visual Studio .NET presenta dos tipos de etiquetas:
a)
Label : es la etiqueta estndar.
7/25/2019 Fundamentos de Las Alplicaciones Windows
22/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
22/32
b) Li nkLabel : deriva de la clase Label y tiene algunas caractersticas aadidas.
Tiene aspecto de hiperlink.
En general, una etiqueta no necesita aadir cdigo. Sin embargo, si se desea que una
etiqueta de tipo Li nkLabel abra una pgina web de una determinada direccin es
necesario aadir cdigo extra. Muchas de las propiedades de Label derivan de la claseCont r ol . Aqu se sealan las ms importantes. Algunas de ellas corresponden slo a la
clase Li nkLabel .
Bor der St yl e Permite especificar el estilo de los bordes de la etiqueta.Di sabl eLi nkCol or (Slo Li nkLabel ) Define el color de la etiqueta despus de haber
sido pulsada.Li nkAr ea (Slo Li nkLabel ) Es el rango de texto que ser presentado como
un Link.Li nkVi si t ed (Slo Li nkLabel ) Propiedad booleana. Especifica si una direccin
ha sido visitada o no.Li nkCol or (Slo Li nkLabel ) Color del Link
La clase TextBox
Este control se utiliza para que el usuario introduzca texto en l . Se puede filtrar el
tipo de caracteres que se introducen en este control.
Esta clase -al igual que la clase Ri chTextBox- deriva de la claseText BoxBase, que a
su vez deriva de la clase Cont r ol . La clase Ri chTextBoxno se estudiar detenidamenteen este libro pero se realiza un extenso ejemplo que la utiliza ms adelante.
Figura 15.11
La clase Text BoxBase proporciona la funcionalidad bsica para manipular cajas de
texto, como por ejemplo, cortar, copiar o pegar texto.
Propiedades
Cont r ol
Text BoxBase
TextBox Ri chText Box
7/25/2019 Fundamentos de Las Alplicaciones Windows
23/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
23/32
Las propiedades ms importantes son:
CausesVal i dat i on Indica si el control genera eventos de validacin.Charact er Casi ng Indica si el texto que se ha introducido se convierte a maysculas
Upper -, minsculas Lower - o se escribe como se introduce
Nor mal -MaxLengt h Especifica el nmero mximo de caracteres que se pueden escribir
en una caja de texto. 0 indica que se pueden introducir tantos
caracteres como se desee siempre que la memoria lo permita-.Mul t i Li ne Indica si el control puede tener varias lneas o slo una.PasswordChar Especifica el carcter que se escribir para sustituir a los caracteres
que se van introduciendo. Esta propiedad slo tiene efecto si
Mul t i Li nees f al seuna sla lnea-ReadOnl y Especifica si el contenido de la caja de texto es de slo lectura.Scrol l Bar s Especifica el tipo de barras de desplazamiento.Sel ect edText Especifica el texto seleccionado en la caja de texto.
Sel ect i onLengt h Define el n de caracteres seleccionados en la caja de texto.Sel ecti onSt ar t Especifica el lugar donde comenzar la seleccin.Wor dWr ap Especifica si en una caja de texto multilnea se realiza o no el salto
de lnea de manera automtica al extenderse la longitud del texto.
Los eventos ms importantes de una caja de texto son los mismos que los que se han
estudiado para la clase Cont r ol . Es importante sealar que, aunque los eventos de
teclado y de ratn pertenecen a la clase Control sin embargo, se explican a continuacin
porque son eventos muy utilizados en estos controles. Adems, este control tiene un
evento especfico que se denomina Change, que ocurre siempre que cambia el texto de
la caja.
Antes de realizar un ejemplo que ayude a comprender cmo puede controlarse los
caracteres que se introducen por el teclado, se estudian con cierto detenimiento, los
eventos de ratn y teclado.
7/25/2019 Fundamentos de Las Alplicaciones Windows
24/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
24/32
Eventos del ratn
Clase MouseEventArgs
Cuando ocurre uno de los eventos MouseUp, MouseDowno MouseMove, se pasa al mtodomanejador un objeto de la clase MouseEvent Ar gs, que encapsula y proporciona
informacin sobre los eventos MouseUp, MouseDowno MouseMoveque se han producido.
Esta clase deriva de la clase Event Ar gs que a su vez deriva directamente de Obj ect :
El evento MouseDown ocurre cuando el usuario presiona el botn mientras el puntero
est sobre el control. MouseUp se produce cuando el usuario libera el botn del ratn
mientras el puntero permanece sobre el control. MouseMove se d cuando el usuario
mueve el puntero del ratn sobre el control. Estos eventos pasan siempre a los
manejadores de estos eventos un objeto de la clase MouseEvent Ar gs, que especifica yencapsula informacin sobre qu botn se ha presionado, cuntas veces, las
coordenadas del puntero del ratn, etc.
Las propiedades de MouseEvent Argsson:
But t on Indica qu botn fue presionado. La propiedad puede valer uno de los
valores de la enumeracin MouseBut t ons.Cl i cks Indica el nmero de veces que se presion el botn y fue liberado. Es
un entero.X Coordenada X del ratn, en pixeles, relativa al area cliente. Es un
entero.Y Coordenada Y del ratn, en pixeles, relativa al area cliente. Es un
entero.
Enumeracin MouseButtons
Es una constante que especifica qu boton del ratn se ha pulsado en el evento.
Esta enumeracin se usa en muchas clases como AxHost , Cont r ol , DataGr i d, Form,
Radi oButt on, Spl i t t er , StatusBar , y UpDownBase.
MouseBut t onspuede tomar los siguientes valores:
Lef t Se presion el botn
izquierdo.Mi ddl e Se presion el botn del
medio.None No se puls ningn botn.Ri ght Se presion el botn derecho
Ejemplo: trabajando con los eventos de ratn
7/25/2019 Fundamentos de Las Alplicaciones Windows
25/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
25/32
Cree una nueva aplicacin. Llmela Event osDeRat on. Borre la propiedad Text del
formulario. Aada un Label en el centro del formulario y ponga su propiedad Namea
textoy borre su propiedadText .
Esta sencilla aplicacin permite controlar las coordenadas del lugar donde se pulsa el
ratn que irn escritas en la cabecera del formulario y la posicin del ratn mientras semueva se presentar en la etiqueta-.
Figura 15.12
Para ello, se va a trabajar con los eventos del formulario, MouseDowny MouseMove.
En la ventana de propiedadesdel formulario, pulse el icono correspondiente a eventosy haga un doble click sobre los eventos MouseDowny MouseMove.
Escriba el siguiente cdigo en cada uno de ellos:
pr i vate voi d Form1_MouseMove( obj ect sender , MouseEvent Ar gs e){
t ext o. Text = " x = " + e. X;t ext o. Text += " , y = " + e. Y;
}
pr i vate voi d For m1_MouseDown(obj ect sender , MouseEvent Ar gs e)
{i f ( e. But t on == MouseBut t ons. Lef t )
t hi s. Text = "bot n i zqui er do";el se i f ( e. But t on == MouseBut t ons. Ri ght )
t hi s. Text = "bot n der echo" ;el se i f ( e. But t on == MouseBut t ons. Mi ddl e)
t hi s. Text = "bot n cent r al ";t hi s. Text += "en x= " + e. X + " , y = " + e. Y;
}
Compile y ejecute la aplicacin.
7/25/2019 Fundamentos de Las Alplicaciones Windows
26/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
26/32
Eventos de teclado
El evento KeyPr esspermite obtener informacin sobre el carcter correspondiente a la
tecla pulsada y los eventos KeyDowny KeyUpsobre las teclas modificadoras que se han
pulsado de manera simultnea a otra tecla.
KeyPress
El evento KeyPr ess ocurre cuando el usuario presiona una tecla. En realidad, se
producen tres eventos. KeyDown, KeyPr ess y KeyUp por este orden- . El evento
KeyDownprecede al evento KeyPr essy al evento KeyUpque ocurre cuando el usuario
liberala tecla. Cuando el usuariopermanece con la tecla pulsada, se repiten cada cierto
tiempo los eventos KeyDowny KeyPr esspero slo se produce una vez el evento KeyUp.
Cuando se produce un evento KeyPr essse envan al mtodo manejador del evento dos
parmetros: un objeto de la clase obj ect llamado sender que contiene informacincorrespondiente al control donde se ha originado el evento y un objeto de la clase
KeyPr essEventAr gsque encapsula informacin sobre el carcter de la tecla que se ha
pulsado.
Con cada evento KeyDown o KeyUp, adems de sender se pasa otro parmetro: un
objeto de la clase KeyEvent Ar gs que encapsula informacin sobre las teclas
modificadoras (CTRL, SHI FT, o ALT) que han sido presionadas de manera simultnea a
otra tecla.
La clase KeyPressEventArgs
La jerarqua de esta clase es la siguiente:
Figura 15.13
Un objeto de la clase KeyPr essEventAr gs especifica el carcter que se produce al
pulsar una tecla. Por ejemplo, cuando el usuario presiona SHI FT + K, la propiedad
KeyChar devuelve una K(mayscula).
Las propiedades ms importantes de la clase KeyPressEventAr gsson:
Obj ect
EventAr gs
KeyPr essEventAr gs
7/25/2019 Fundamentos de Las Alplicaciones Windows
27/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
27/32
Handl ed Valor booleano que indica si el evento KeyPr ess ha sido manipulado.
Si es true, no se hace nada con el carcter pulsado. Si f al se, se sigue
el curso normal. Un buen ejemplo lo constituye la aplicacin que se
hace a continuacin.
KeyChar Obtiene el carcter como char - correspondiente a la tecla pulsada.
Ejemplo: Trabajando con los eventos del teclado.
Esta aplicacin, obtiene el carcter de la tecla pulsada y su cdigo ASCII. Se estudia el
evento KeyPr ess, y, en concreto, la propiedad KeyChar de la clase
KeyPr essEventAr gsque es un char . Para ello:
Cree un nuevo proyecto denominado Proyect oEvent osKeyPr ess. Site cuatro etiquetas en el formulario con los textos que se indican en la figura
15.14, y coloque tres cajas de texto, con la propiedad Text vaca y las siguientes
propiedades Name: texto, codi goKeyChar y codi goNumer i coKeyChar ,
respectivamente.
Figura 15.14
En el evento KeyPr ess de la primera caja de texto, texto, escriba el siguiente
cdigo:
pr i vat e voi d t exto_KeyPr ess( obj ect sender , KeyPr essEvent Ar gs e){
char car act er I nt r oduci do=e. KeyChar ;codi goKeyChar . Text =car acterI nt r oduci do. ToSt r i ng( ) ;codi goNumer i coKeyChar . Text=( ( i nt ) car act er I nt r oduci do) . ToSt r i ng( ) ;
}
Se puede comprobar que cuando en la caja texto texto se pulsa una tecla, el evento
KeyPr esspuede capturar el cdigo como un char a travs de la propiedad KeyChar dee, que es el parmetro que recibe este mtodo. Por esta razn, se puede distinguir entre
7/25/2019 Fundamentos de Las Alplicaciones Windows
28/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
28/32
las letras ay A. Observe que algunas teclas especiales tambin tienen un cdigo ASCI I
aunque no devuelven un carcter legible. A continuacin, se adjunta una tabla con los
cdigos ASCII correspondientes a los valores ms usuales:
Tecla pulsada Valor ASCII0, 1, 2, . . . , 9 48, 49, . . . , 57a, b, c, . . . , z 97, 98, 99, . . . , 122A, B, . . . , Z 65, 66, . . . , 90Esc 27Ret r oceso 8ENTER 13Cont r ol +ENTER 10
Esto es muy til para filtrar las entradas desde el teclado y ser el objeto de este
segundo ejemplo:
Ejemplo: filtrando las entradas introducidas desde el teclado.
Se trata de implementar un proyecto con una caja de texto que nicamente permita
entradas numricas. Para ello, se debe controlar que las entradas estn comprendidas
entre 0y 9. Si la entrada no es un nmero, no se hace nada con la entrada. Slo se tiene
en cuenta una excepcin: que la entrada sea la tecla RETROCESO. De esa manera ser
posible borrar una entrada. Para implementar esto, cambie en el anterior ejemplo el
cdigo del evento KeyPr essde la caja de texto texto, por el siguiente:
pr i vat e voi d t exto_KeyPr ess( obj ect sender , KeyPr essEvent Ar gs e){
char car act er I nt r oduci do=e. KeyChar ;/ / Si no es numer i co y di st i nto de RETROCESOi f ( ( car act er I nt r oduci do57)
&& car act er I nt r oduci do != 8){
/ / No se escr i be nada en l a caj a de t ext oe. Handl ed=t r ue;
}
codi go. Text =car act er I nt r oduci do. ToSt r i ng( ) ;codi goNumer i co. Text =( ( i nt ) car act er I nt r oduci do) . ToSt r i ng( ) ;}
En la lnea correspondiente a la sentencia i f los valores ASCI I correpondientes a
nmeros comprendidos entre 0y 9, estn entre 48y 57. En esta lnea se asegura que el
carcter introducido no est en ese rango.
El carcter ASCI I correspondiente a la tecla RETROCESOes el 8. Se permite esta entrada
para poder modificar la caja de texto. En un ejemplo posterior se ver otra manera de
conocer si sta es la tecla pulsada.
La propiedad Handl edde KeyPr essEventAr gs est a true indicando que no se hace
nada con ese carcter, y por lo tanto, no se escribe nada.
7/25/2019 Fundamentos de Las Alplicaciones Windows
29/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
29/32
Por supuesto, se podra sustituir la lnea
i f ( ( car act er I nt r oduci do57)&& caract er I nt r oduci do ! = 8)
por la lnea
i f ( ( car acter I nt r oduci do 9 )&& car act er I nt r oduci do ! = ' \ b' )
que es quiz ms comprensible.
Aunque no se describir la aplicacin completa, es interesante considerar la posibilidad
de que un programa cuente el nmero de veces que se han pulsado una serie de teclas,
por ejemplo las teclas: ESCAPE, REROCESO, RETURNy nmero de pulsaciones totales.
Para ello, se podran definir cuatro variables estticas del formulario, por ejemplo:
static long contadorPulsacionesTeclas = 0 ;static long contadorRetrocesos = 0;static long contadorEnter = 0 ;static long contadorEsc = 0 ;
El cdigo del mtodo manipulador del evento KeyPr esspodra ser algo parecido a:
pr i vat e voi d t exto_KeyPr ess( obj ect sender , KeyPr essEvent Ar gs e){
switch(e.KeyChar){
// Contar Retrocesos.case '\b':
contadorRetrocesos++;break ;
// Contar ENTER.case '\r':
contadorEnter++;break ;
// Contar ESCAPE.case (char)27:
contadorEnter ++ ;break ;
// Contar otras pulsaciones.default:
contadorPulsacionesTeclas++ ;break;}
}
Eventos KeyDown y KeyUp.
Como anteriormente se ha explicado, un evento KeyDownocurre siempre que el usuario
presiona una tecla. El evento KeyUpocurre cuando se liberaesa tecla. Siempre que se
mantiene pulsada una tecla, ocurre cada determinado tiempo un evento KeyDown, pero
slo ocurre una vez el evento KeyUppuesto que slo una vez se ha liberado esa tecla-.
7/25/2019 Fundamentos de Las Alplicaciones Windows
30/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
30/32
Cuando se produce un evento KeyDown o KeyUp se pasa un objeto de la clase
KeyEvent Ar gs, al mtodo que manipula o maneja ese evento. Ese objeto encapsula
informacin sobre qu tecla especfica ha pulsado el usuario y si de manera simultnea
ha pulsado una tecla modificadora (CTRL, ALT, y SHI FT). La jerarqua de la clase
KeyEvent Ar gses la siguiente:
Figura 15.15
Algunas de las propiedades de la clase KeyEvent Ar gs son las siguientes:
Al t Obtiene un valor que indica si se ha presionado la tecla ALT.Cont r ol Obtiene un valor que indica si se ha presionado la tecla CTRL.Handl ed Obtiene un valor booleano para indicar si se ha tratado el
evento.KeyCode Devuelve un objeto Keys correspondiente al cdigo de la tecla
que se ha pulsado. Es de slo lectura.KeyDat a Obtiene un objeto Keyscon la combinacin de las teclas que se
presionaron.KeyVal ue Devuelve un valor entero correspondiente al cdigo de la tecla
que se ha pulsado.Modi f i er s Indica qu tecla modificadora se ha pulsado (CTRL, SHI FT y/o
ALT).Shi f t Obtiene un valor que indica si se ha presionado la tecla SHI FT.
Observaciones:
Las propiedades KeyCode, KeyDat a y KeyVal ue son de slo lectura y tienen el
siguiente formato:
publ i c Keys KeyCode
publ i c Keys KeyDat apubl i c i nt KeyVal ue
Obj ect
EventAr gs
KeyEvent Ar gs
7/25/2019 Fundamentos de Las Alplicaciones Windows
31/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
31/32
Observe que tanto KeyCode como KeyDat a son del tipo Keys.
Enumeracin Keys
Especifica los cdigos de las teclas y de los modificadores (modi f i er s).
Esta enumeracin contiene constantes para procesar las entradas por teclado. Las teclas
se identifican con valores de tecla que consisten en un cdigo y en un juego de
modificadores combinados en un simple valor entero. Los cuatro dgitos de la izquierda
del valor de la tecla contienen el cdigo de la tecla que es el mismo que los
tradicionales de Windows- y los cuatro de la derecha, contienen los bits modificadores
para las teclas SHI FT, CONTROLy ALT.
A continuacin se adjunta una tabla con los valores ms usuales.
Nombre DescripcionA, B, Z A, B, . . . , Z.Add +Al t ALT.Back BACKSPACE.Cancel CANCEL.Capi t al CAPS LOCK.CapsLock CAPS LOCK .Cl ear CLEAR.Cont r ol CTRL .Cont r ol Key CTRL .D0, D1, , D9 0, 1, . . . , 9.Deci mal deci mal .Del et e DEL o SUP.Di vi de /Down Fl echa abaj o.End END.Ent er ENTER .Escape ESC .F1, F2, , F24 F1, F2, , F24.Hel p HELP.Home HOME.KeyCode El bi t de mascar a de bi t s para determi nar el cdi go de
l a t ecl a a part i r del val or.Lef t Fl echa i zqui er da.Modi f i er s El bi t de mscar a de bi t s par a det er mi nar l os
modi f i cador es.Next PAGE DOWN.
None Ni nguna t ecl a presi onadaNumLock NUM LOCK .NumPad0, NumPad1, ,NumPad9
Tecl as t ecl ado numer i co 0, 1, 2, , 9.
PageDown PAGE DOWNPageUp PAGE UP .Pause PAUSE .Pr i nt PRI NT .Pr i ntScreen PRI NT SCREEN .Pr i or PAGE UP .Ret ur n The RETURN .Ri ght Fl echa derecha.Shi f t SHI FT.
Snapshot PRI NT SCREEN .Space SPACEBAR .
7/25/2019 Fundamentos de Las Alplicaciones Windows
32/32
Marco Besteiro y Miguel Rodrguez Fundamento de las Aplicaciones Windows
Subt r act -Tab TAB.Up Fl echa ar r i ba.
Ejemplo: trabajando con eventos de teclado II
En este ejemplo, se puede observar bien las diferencias entre KeyCode, KeyDat a,
KeyVal uey Modi f i er s.
Cree un nuevo proyecto, y llmele Proyect oEvent osKey. Site cuatro etiquetas en el
formulario principal, en una columna, dje sus propiedades Namepor defecto y ponga
sus propiedadesText a KeyCode, KeyDat a, KeyVal uey Modi f i er s. Site en la parte de
la derecha otra columna de cuatro etiquetas, con sus propiedades Namea codi go, data,
val or y modi f i cador y su propiedadText vaca. En la ventana de propiedadesdel
formulario For m1, pulse sobre la ventana de eventosy haga doble-click sobre el evento
KeyUpy escriba el cdigo siguiente:
pri vat e voi d For m1_KeyUp(obj ect sender , KeyEventAr gs e){
codi go. Text=e. KeyCode. ToSt r i ng( ) ;dat a. Text=e. KeyDat a. ToSt r i ng( ) ;val or . Text=e. KeyVal ue. ToSt r i ng( ) ;modi f i cador . Text =e. Modi f i er s. ToSt r i ng( ) ;
}
Guarde el programa, complelo y ejectelo a continuacin.
Compruebe que si, por ejemplo, pulsa la letra ay de manera simultnea la tecla Shi f t el formulario se parecer al de la figura 15.16:
Figura 15.16
Es importante observar que con este evento no se puede distinguir entre la pulsacin de
la letra ay la A. Para ello, hay que trabajar con el evento KeyPr ess.