La Web del Programador: Comunidad de Programadores
 
    Pregunta:  58684 - NO SE DISPARA EL EVENTO KEYPRESS
Autor:  Sonia Martin
Hola,
Primero quisiera comentar que soy un "pececillo" en el mundo de programacion orientada a objetos y c sharp; llevo 6 meses intentando programar con c sharp.
Estoy trabajando con los controles del DevExpress

Mi problema es:
Tengo un formulario => frmGestion
en el cual tengo un panel y una barra de menu
Cuando selecciono una opcion de menu; ej: mnuFichero:
panel.Controls.Add(controlA);

El control => controlA
en el cual tengo un GridView, cuando pulso en el grid quiero capturar la tecla pulsada, ya sea numero o F2...., cualquier tecla.
He programado el evento del grid:
private void grdAsientos_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == Convert.ToChar(Keys.F2)) //F2
{
OnSegundo(sender, e);
e.Handled = true;
}

He aqui mi problema, yo pulso F2 y no entra en este evento, pulso el 9 y no entra, pulso TAB y no entra, pulso Intro y no entra y vulvo a pulsar intro y entronces entra en el void.
¿Que hago mal? Sea cual sea la tecla tendría que entrar, ¿no? y ademas a la primera no la segunda vez.

Si alguien me entiende y me puede ayudar, millones de gracias le haré llegar.

Saludos

  Respuesta:  miguel zarate
Hola, parece ser que grdAsientos lo agregas en tiempo de ejecucion,
por lo que no olvides que la debes delegar el evento key press de la siguiente manera:
grdAsientosKeyPress += new KeyPressEventHandler(grdAsientos_KeyPress);

ahora para no estar convirtiendo puedes usar en el if
e.KeyCode==Keys.F2

espero te sirva,

saludos