Fundamentos de Las Alplicaciones Windows

download Fundamentos de Las Alplicaciones Windows

of 32

Transcript of Fundamentos de Las Alplicaciones Windows

  • 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.