c# - textbox1_keydown - Problemas para crear el evento KeyDown en el Panel
textbox1 keypress (1)
El control del panel no puede enfocarse y tampoco puede seleccionarse. Los controles enfocados solo pueden obtener "eventos clave". Es probable que deba anular ProcessCmdKey
en su formulario o UserControl
.
Necesita configurar KeyPreview = true
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch(keydata)
{
case Keys.Up:
break;
...
}
return base.ProcessCmdKey(ref msg, keyData);
}
Actualmente estoy trabajando en winform que tiene un panel en él. Necesito poder usar las flechas hacia arriba, abajo, izquierda y derecha en el panel y conseguir que algo suceda.
Intenté agregar el evento con esta línea de código:
(MainPanel as Control).KeyDown +=
new KeyEventHandler(panelKeyPressEventHandler);
Con este código KeyDown:
public void panelKeyPressEventHandler(object sender, System.Windows.Forms.KeyEventArgs e)
{
MessageBox.Show("Here I am!");
switch (e.KeyCode)
{
case Keys.L:
{
break;
}
case Keys.R:
{
break;
}
case Keys.Up:
{
break;
}
case Keys.Down:
{
break;
}
case Keys.Right:
{
break;
}
case Keys.Left:
{
break;
}
}
}
Hasta ahora, incluso cuando garantizo que el foco está configurado en el panel, no puedo hacer que entre a esta función de evento KeyDown para nada. :( Puedo presionar las teclas todo el día y no pasa nada.
¿Alguien tiene alguna sugerencia sobre la mejor manera de manejar las flechas arriba, abajo, izquierda y derecha presionadas cuando un panel tiene foco?
¡Gracias!