Eventos Del Teclado en WindowsForms

download Eventos Del Teclado en WindowsForms

of 11

Transcript of Eventos Del Teclado en WindowsForms

  • 7/24/2019 Eventos Del Teclado en WindowsForms

    1/11

    Eventos del teclado en WindowsForms

    Usos de los eventos del tecladoTambin le puede interesar: Eventos del teclado en WPF

    Octavio Telis Ayns

    Junio 2004

    Resumen: Durante el desarrollo de aplicaciones es comn que surja la necesidad deaplicar combinaciones de teclas o identiicar al!una tecla presionada por el usuario conel objetivo de reali"ar al!una tarea o para dotar de accesos directos que provean deuncionalidad e#tendida a las aplicaciones$ %ste art&culo muestra de una maneraintroductoria y pr'ctica el modo de utili"ar los eventos de teclado para (atrapar) lacombinaci*n de teclas deseado o identiicar la tecla presionada y ejecutar una acci*ndeterminada$

    Contenido

    +ntroducci*n,so del evento -eyDo.n y -ey/ress para nave!ar entre controles,so del evento -ey,p para detectar la combinaci*n de teclas

    Introduccin

    os controles para 1indo.s orms proveen de eventos para el manejo de las accionesdel usuario con el teclado3 estos eventos lle!an a ser un poco dierentes entre s&

    dependiendo de la acci*n reali"ada por el usuario$ Dicos eventosson -ey/ress3-eyDo.ny -ey,p3 la dierencia entre estos son los ar!umentos quereciben3 para el primero se recibe la inormaci*n del evento en una ar!umento deltipo 5ystem$1indo.s$orms$-ey/ress%ventAr!s 3 que e#pone mtodos y propiedadespara saber si el evento a sido manejado 6andled7 o el caracter que devuelve la teclapresionada 6-ey8ar73 este evento es til cuando se desea obtener el caracter que uepresionado3 por ejemplo para manejar la tecla %nter$ os otros doseventos3 -eyDo.ny-ey/resstienen irmas idnticas3 sin embar!o3 -eyDo.nsucede almomento de presionar una tecla 6cuando la tecla va acia abajo7 y -ey,psucede almomento de soltar la tecla 6cuando la tecla va acia arriba73 ambos recibeninormaci*n del evento por medio de un ar!umento deltipo 5ystem$1indo.s$orms$-ey%ventAr!s 3 a dierencia de -ey/ress%ventAr!s3 este

    tipo e#pone m's inormaci*n sobre la acci*n del usuario3 esta inormaci*n est'contenida en distintas propiedades3 por ejemplo Alt que indica si se presion* la tecla(alt) an'lo!amente se comportan las propiedades 8ontrol3 5it3 etc$ a secuencia enque se lan"an los eventos es empe"ando por el -eyDo.nse!uido el -ey/ressy parainali"ar el -ey,p3 es importante acer notar que estos eventos se lan"an cada ve" queuna tecla es presionada$

    http://blogs.msmvps.com/otelis/2015/07/21/eventos-del-teclado-en-wpf/http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeypresseventargsclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeypresseventargsclasshandledtopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeypresseventargsclasskeychartopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeyeventargsclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeypresseventargsclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeypresseventargsclasshandledtopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeypresseventargsclasskeychartopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeyeventargsclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://blogs.msmvps.com/otelis/2015/07/21/eventos-del-teclado-en-wpf/
  • 7/24/2019 Eventos Del Teclado en WindowsForms

    2/11

    /odemos utili"ar los eventos del teclado para distintas tareas3 simplemente ay quetener en cuenta en qu momento debemos evaluar la acci*n del usuario para teneruna ejecuci*n en el tiempo e#acto y de manera transparente$

    Uso de los eventos Keyown y KeyPress para nave!arentre controles

    %n este ejemplo se muestra el uso del evento -eyDo.ny -ey/resspara cambiar eloco de un control a otro usando la teclaEnteren lu!ar de la tecla de tabulaci*n 6Tab7$

    %l c*di!o de este ejemplo est' disponible en 9$;%Ty 98$ %n el men Archivo3 seleccione Nuevoy despus seleccione Proyectoparaabrir la venta de Nuevo Proyecto$

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://webcast.tutordes.com/ejemplo01vb.ziphttp://webcast.tutordes.com/ejemplo01cs.ziphttp://www.microsoft.com/spanish/msdn/gruposnoticias.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://webcast.tutordes.com/ejemplo01vb.ziphttp://webcast.tutordes.com/ejemplo01cs.ziphttp://www.microsoft.com/spanish/msdn/gruposnoticias.asp
  • 7/24/2019 Eventos Del Teclado en WindowsForms

    3/11

    2$ 5eleccione la plantilla de proyecto Aplicacin para Windowsen la lista deproyectos para 9isual asic o 9isual 8< y escriba Ejemplo01en la caja de te#topara el Nombre$

    @$ %n el men Archivo3 elija Guardar odopara !uardar su proyecto

    %n el ormulario que se crea predeterminadamente3 dibujaremos tres controles Te#to#

    emparejados con tres controles abel3 tambin dibujaremos un control utton paratener una manera de salir del nuestra aplicaci*n3 la coni!uraci*n de las propiedadesde los controles se muestra en la tabla >:

    orm

    Te#to#

    Te#to#

    Te#to#

    abel

    abel

    abel

    utton

    Tabla 1.- Propiedades de controles

    ,na ve" reali"ado esto3 quedar' un ormulario parecido al de la i!ura >$ %s importantetener en cuenta el orden de los controles establecido por la propiedad Tab+nde# decada Te#to#3 ya que de esta manera tendremos ase!urado el orden al pasar de unTe#to# a otro$

    Figura 1.- Formulario de ejemplo

  • 7/24/2019 Eventos Del Teclado en WindowsForms

    4/11

    /ues bien3 tenemos ya el ormulario que usaremos en este ejemplo$ podemos entoncescontinuar con el c*di!o$

    %mpecemos con lo si!uiente3 deinamos los eventos -ey/ressy -eyDo.nen la secci*nde c*di!o del ormulario orm>$ /ara evitar repetir el mismo evento en cada uno de loscontroles de te#to3 declararemos un mtodo que servir' de controlador de evento paralos tres Te#to#es$ %mpecemos con el evento -ey/ress$

    Para crear los controladores de eventos

    /or deinici*n el evento -ey/ressutili"a la irma de un dele!ado que contienen

    los si!uientes ar!umentos Objecty5ystem$1indo.s$orms$-ey/ress%ventAr!s 3conociendo esto no nos ser' di&cil crear el controlador del evento:

    // Cdigo en C#

    private void txt_KeyPress(object sender,System.Windos.!orms.KeyPress"ventrgs e$%

    B

    C 8*di!o en 9isual asic/rivate 5ub t#t-ey/ress6y9al sender As Object3 y9al e As5ystem$1indo.s$orms$-ey/ress%ventAr!s7

    %nd 5ub

    8ontinuando aremos lo mismo para el evento -eyDo.n3 este evento utili"a la

    irma de un dele!ado con los si!uientesar!umentos Objecty 5ystem$1indo.s$orms$-ey%ventAr!s 3 aora que sabemos lairma3 construir el controlador del evento ser' 'cil y ser' tan simple como en elcaso anterior del constructor del evento -ey/ress$ 9eamos:

    // Cdigo en C#

    private void txt_Key&on(object sender,System.Windos.!orms.Key"ventrgs e$%

    B

    C 8*di!o en 9isual asic/rivate 5ub t#t-eyDo.n6y9al sender As Object3 y9al e As5ystem$1indo.s$orms$-ey%ventAr!s7

    %nd 5ub

    Easta este momento tenemos declarados los controladores de los eventos3 sin

    embar!o3 no ser'n lan"ados al momento de reali"ar al!una acci*n con el teclado3esto es porque aun no se a!re!an los controladores de los eventos de cada Te#to#a sus respectivos eventos3 esto lo veremos m's adelante3 por el momento debemosdarle la uncionalidad !eneral requerida para poder utili"arlos en todos los controlesde te#to$ /ara esto deiniremos en la primera l&nea dentro de cada mtodocontrolador lo si!uiente:

    // Cdigo en C#

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemObjectClassTopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeypresseventargsclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemObjectClassTopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeyeventargsclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemObjectClassTopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeypresseventargsclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemObjectClassTopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeyeventargsclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeypresstopic.asp
  • 7/24/2019 Eventos Del Teclado en WindowsForms

    5/11

    'extox txt ) sender as 'extox*

    C 8*di!o en 9isual asicDim t#t as Te#to# F Direct8ast 6sender3Te#to#7o que se est' aciendo en esta l&neaes convertir el objeto sender en Te#to#3 esto es porque al saber que el controlador

    ser' para el evento de un control Te#to#3 el sender ser' en todos los casos unTe#to#$ 8laro que esto ser' siempre que el controlador sea a!re!ado a los eventos deun Te#to# en caso contrario se pueden presentar e#cepciones deltipo 5ystem$;ullGeerence%#ceptiono 5ystem$+nvalid8ast%#ceptionas& pues debemostener en cuenta que ser'n controladores de eventos e#clusivamente para Te#to#es$

    Para a"re"ar los m#todos controladores a los eventos

    Teniendo en cuenta lo anterior3 deinamos un mtodo para a!re!ar los

    controladores de eventos a los eventos de teclado de cada Te#to#$ %ste mtodotendr' que ser invocado inmediatamente despus del mtodo +nitiali"e8omponent67dentro del constructor del ormulario3 deinamos pues nuestro mtodo+nitiali"e%vents67:

    // Cdigo en C#

    private void +nitiai-e"vents($

    %

    //

    // txtCampo

    //

    tis.txtCampo.KeyPress 0) neKeyPress"vent1ander(txt_KeyPress$*

    tis.txtCampo.Key&on 0) ne Key"vent1ander(txt_Key&on$* //

    // txtCampo2

    //

    tis.txtCampo2.KeyPress 0) neKeyPress"vent1ander(txt_KeyPress$*

    tis.txtCampo2.Key&on 0) ne Key"vent1ander(txt_Key&on$*

    //

    // txtCampo3

    //

    tis.txtCampo3.KeyPress 0) neKeyPress"vent1ander(txt_KeyPress$*

    tis.txtCampo3.Key&on 0) ne Key"vent1ander(txt_Key&on$*4

    C 8*di!o en 9isual asic/rivate 5ub +nitiali"e%vents67CCt#t8ampo>CAddEandler He$t#t8ampo>$-ey/ress3 AddressO t#t-ey/ress

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnullreferenceexceptionclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsysteminvalidcastexceptionclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnullreferenceexceptionclasstopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsysteminvalidcastexceptionclasstopic.asp
  • 7/24/2019 Eventos Del Teclado en WindowsForms

    6/11

    AddEandler He$t#t8ampo>$-eyDo.n3 AddressO t#t-eyDo.nCCt#t8ampo2CAddEandler He$t#t8ampo2$-ey/ress3 AddressO t#t-ey/ressAddEandler He$t#t8ampo2$-eyDo.n3 AddressO t#t-eyDo.n

    CCt#t8ampo@CAddEandler He$t#t8ampo@$-ey/ress3 AddressO t#t-ey/ressAddEandler He$t#t8ampo@$-eyDo.n3 AddressO t#t-eyDo.n%nd 5ub

    Easta este momento emos asi!nado los controladores de eventos a los

    eventos de nuestros controles y para que esto suceda en modo de ejecuci*n nodebemos olvidarnos de invocar el mtodo +nitiali"e%vents67 inmediatamente despusdel mtodo +nitiali"e8omponent673 esto se ar' en el constructor del ormulario3como se muestra a continuaci*n:

    // Cdigo en C#

    p5bic !orm($

    %

    +nitiai-eComponent($*

    +nitiai-e"vents($*4

    C 8*di!o en 9isual asic/rivate 5ub ;e.67Hyase$;e.67+nitiali"e8omponent67

    +nitiali"e%vents67%nd 5ubPara a"re"ar la $uncionalidad

    ien3 aora continuemos con la uncionalidad que queremos a!re!arle a nuestro

    ormulario3 ser' simple y en un instante estar' listo$ A!re!aremos al controlador delevento -eyDo.nlas si!uientes l&neas de c*di!o3 este c*di!o nos servir' paraidentiicar si la tecla %nter a sido presionada por el usuario3 se!uido de estoenviaremos el oco al si!uiente control con el mtodo 5elect;e#t8ontrol67delormulario:

    // Cdigo C#

    i6(e.KeyCode )) Keys."nter$

    %

    tis.Seect7extContro(txt,tr5e,tr5e,6ase,6ase$*4

    C 8*di!o en 9isual asic+ e$-ey8ode F -eys$%nter TenHe$5elect;e#t8ontrol6t#t3 True3 True3 alse3 alse7

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclassselectnextcontroltopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclassselectnextcontroltopic.asp
  • 7/24/2019 Eventos Del Teclado en WindowsForms

    7/11

    %nd +/ues bien3 ya solo queda ejecutar el proyecto y acer las pruebas correspondientes$8on esto concluye el ejemplo sobre la nave!aci*n entre controles3 espero en lopersonal que sea til y satisa!a una de las dudas m's recuentes sobre la nave!aci*nde controles$

    Para probar el proyecto

    >$ %n el men %epurar3 elija &niciar$%l ormulario 'orm1se abre como se muestra en la i!ura >$

    2$ /resione la tecla %nter$;ote que el oco del control t(t!ampo1se va al si!uiente control de te#to se!n elorden que se estableci* en la propiedad Tab+nde# de cada uno de estos$

    Uso del evento KeyUp para detectar la combinacin deteclas

    Otra uncionalidad que comnmente se utili"a es la de detectar qu tecla ocombinaci*n de teclas ue presionada para responder con una acci*n a una condici*ndada3 esto es3 en ocasiones las aplicaciones requieren de mayor versatilidad yuncionalidad y para darles estas capacidades se puede incluir el uso de (atajos) parareali"ar al!una acci*n o tarea en particular$ Dentro de los est'ndares que se manejan

    en 1indo.s se encuentran distintas combinaciones3 por ejemplo3 al presionar Alt I 4se cerrar' la ventana activa3 de i!ual manera se pueden deinir combinacionesespec&icas para cada aplicaci*n$

    5e!uiremos utili"ando nuestro proyecto %jemplo0> para mostrar una de las manerasde utili"ar el evento -ey,p$

    Para construir el evento )ey*p

    %l evento -ey,pes casi idntico al evento -eyDo.n3 la dierencia radica en el

    orden en que son lan"ados3 sabiendo esto3 veremos que la irma del dele!ado es lamisma que usamos con el evento -eyDo.n3 as& pues3 no nos ser' di&cil construir elcontrolador de nuestro evento:

    // Cdigo en C#

    private void ctr_Key8p(object sender,System.Windos.!orms.Key"ventrgs e$

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeydowntopic.asp
  • 7/24/2019 Eventos Del Teclado en WindowsForms

    8/11

    %

    B

    C 8*di!o en 9isual asic/rivate 5ub ctrl-ey,p6y9al sender As Object3 y9al e As5ystem$1indo.s$orms$-ey%ventAr!s7

    %nd 5ub

    8omo se puede apreciar3 el evento aora tiene el preijo ctrl en ve" de t#t3 y es

    con el objetivo de indicar que el controlador de evento podr' ser utili"ado porcualquier control que soporte los eventos del teclado3 aora veremos c*mo cambiala conversi*n de sender para que esto sea posible$ Gecordemos que los controles secrean a partir de clases eredadas de8ontrol3 esta clase e#pone la mayor&a de laspropiedades que se ven en los controles que utili"amos en nuestro proyecto deejemplo3 as& pues3 la conversi*n ser' m's !eneral$

    // Cdigo en C#Contro ctr ) sender as Contro*

    C 8*di!o en 9isual asicDim ctrl as 8ontrol F Direct8ast 6sender38ontrol7

    5olo altar' a!re!ar a nuestro mtodo de iniciali"aci*n de eventos el c*di!o

    necesario para a!re!ar el controlador a los eventos correspondientes3 en estaocasi*n incluiremos a nuestro bot*n btn5alir para demostrar la manera en quetrabajar' el controlador del evento -ey,pcon cualquier control:

    // Cdigo en C#

    private void +nitiai-e"vents($

    %

    //

    // txtCampo

    //

    tis.txtCampo.KeyPress 0)neKeyPress"vent1ander(txt_KeyPress$*

    tis.txtCampo.Key&on 0)ne Key"vent1ander(txt_Key&on$*

    tis.txtCampo.Key8p 0)ne Key"vent1ander(ctr_Key8p$*

    //

    // txtCampo2

    //

    tis.txtCampo2.KeyPress 0)neKeyPress"vent1ander(txt_KeyPress$*

    tis.txtCampo2.Key&on 0)ne Key"vent1ander(txt_Key&on$*

    tis.txtCampo2.Key8p 0)ne Key"vent1ander(ctr_Key8p$*

    //

    // txtCampo3

    //

    tis.txtCampo3.KeyPress 0)neKeyPress"vent1ander(txt_KeyPress$*

    tis.txtCampo3.Key&on 0)ne Key"vent1ander(txt_Key&on$*

    tis.txtCampo3.Key8p 0)ne Key"vent1ander(ctr_Key8p$*

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassTopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassTopic.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclasskeyuptopic.asp
  • 7/24/2019 Eventos Del Teclado en WindowsForms

    9/11

    //

    // btnSair

    //

    tis.btnSair.Key8p 0)ne Key"vent1ander(ctr_Key8p$*4

    C 8*di!o en 9isual asic/rivate 5ub +nitiali"e%vents67CCt#t8ampo>CAddEandler He$t#t8ampo>$-ey/ress3 AddressO t#t-ey/ressAddEandler He$t#t8ampo>$-eyDo.n3 AddressO t#t-eyDo.nAddEandler He$t#t8ampo>$-ey,p3 AddressO ctrl-ey,pCCt#t8ampo2C

    AddEandler He$t#t8ampo2$-ey/ress3 AddressO t#t-ey/ressAddEandler He$t#t8ampo2$-eyDo.n3 AddressO t#t-eyDo.nAddEandler He$t#t8ampo2$-ey,p3 AddressO ctrl-ey,pCCt#t8ampo@CAddEandler He$t#t8ampo@$-ey/ress3 AddressO t#t-ey/ressAddEandler He$t#t8ampo@$-eyDo.n3 AddressO t#t-eyDo.nAddEandler He$t#t8ampo@$-ey,p3 AddressO ctrl-ey,pCCbtn5alirCAddEandler He$btn5alir$-ey,p3 AddressO ctrl-ey,p%nd 5ub

    A"re"ar $uncionalidad al evento

    5olo altar' a!re!ar al!una uncionalidad y al!una condici*n de combinaci*n de

    teclas para mostrar como unciona el evento-ey,p$ /ara ines pr'cticos3capturaremos la combinaci*n de las teclas 8trlIAltI3 con lo cual cambiaremos elcolor de ondo del control que ten!a el oco3 esto nos dar' la oportunidad de ver lamanera en que se toma al sendercomo !ontrolpara reali"ar el cambio a una

    propiedad comn$ %ncontraremos dierencias m's marcadas entre 8< y 9$;%T almomento de evaluar los valores de las teclas presionadas3 debido a las dospropiedades de -ey%ventAr!sque utili"aremos -eyData3 que almacena la suma delos valores de las teclas presionadas 6estos valores corresponden a las constantesdeclaradas en la enumeraci*n 5ystem$1indo.s$orms$-eys7 y -ey8odeparaobtener el valor de las constantes de la enumeraci*n -eys$ /ara el caso de 8

  • 7/24/2019 Eventos Del Teclado en WindowsForms

    10/11

    opci*n para validar la acci*n del usuario3 esta es mediante la comparaci*n l*!ica3esta opci*n es m's eiciente pues evita el uso de la clase 8onvert3 en este caso ser&arecomendable usar esta opci*n en lu!ar de la anterior$

    // Cdigo en C#

    i6 (Convert.'o+nt32(e.Key&ata$ )) Convert.'o+nt32(Keys.t$ 0

    Convert.'o+nt32(Keys.Contro$ 0 Convert.'o+nt32(Keys.$ $ %

    i6(ctr.ac9Coor.'oString($ )) Coor.7avy.'oString($$

    %

    ctr.ac9Coor) ne Coor($*

    4

    ese

    %

    ctr.ac9Coor ) Coor.7avy*

    4

    4

    // Seg5nda opcin en C#

    i6 (e.t :: e.Contro :: e.KeyCode))Keys.$

    %

    i6(ctr.ac9Coor.'oString($ )) Coor.7avy.'oString($$

    %

    ctr.ac9Coor) ne Coor($*

    4

    ese

    %

    ctr.ac9Coor ) Coor.7avy*

    44

    C 8*di!o en 9isual asic+ e$-eyData F e$-ey8ode$Alt I e$-ey8ode$8ontrol I e$-ey8ode$ Ten+ ctrl$ac8olor$To5trin!67 F 5ystem$Dra.in!$8olor$;avy$To5trin!67 Tenctrl$ac8olor F ;e. 5ystem$Dra.in!$8olor%lsectrl$ac8olor F 5ystem$Dra.in!$8olor$;avy%nd +%nd +

    Para probar el proyecto

    >$ %n el men %epurar3 elija &niciar$%l ormulario 'orm1se abre como se muestra en la i!ura >$

    2$ /resione las teclas 8trl3 Alt y al mismo tiempo$;ote que el control que ten!a en oco en ese momento cambiar' el color de ondo aa"ul marino$

    http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemConvertClassTopic.asphttp://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemConvertClassTopic.asp
  • 7/24/2019 Eventos Del Teclado en WindowsForms

    11/11

    Conclusin

    Eemos visto en este art&culo la manera de utili"ar los eventos del teclado para darsoluci*n a aquellas pre!untas que tanto se acen en los oros$ Debemos tener en

    consideraci*n distintos aspectos3 uno de ellos es tener cuidado de no utili"arcombinaciones de teclas que utilice el sistema operativo como ctrl I alt I supr3 * alt Itab3 tambin ver que combinaciones de teclas se utili"an para cierto caracteres3 porejemplo3 ctrl I alt I K 6%sp$ atam7 * ctrl I alt I 2 6%spa=a7 devuelven la arroba (L)$/ues bien3 teniendo en cuenta esto no creo que e#ista m's problema3 espero sea til lainormaci*n de este art&culo$

    /osted in 8