2010-06-08 16 views
13

Tengo un formulario primario que contiene muchos controles. Lo que intento hacer es filtrar todas las pulsaciones de teclas para esa forma. El problema es que si el foco está en uno de los controles del formulario, entonces el formulario principal no recibe el evento de pulsación de tecla, entonces, ¿cómo puedo capturar el evento de pulsación de tecla?Cómo atrapar una tecla presionada en un formulario de C# .NET

Respuesta

34

Conjunto TeclaDePresentaciónPreliminar true en su forma y que se atraparlos: MSDN

3
myForm : Form 
{ 

    public ChildForm() 
    {  
     KeyPress += KeyPressHandler; 
    } 

    public KeyPressHandler(object sender, KeyPressEventArgs e) 
    { 
     if (_parent != null) 
     { 
      _parent.NotifyKeyPress(e); 
     } 
    } 
} 

Esto hará más suites en su caso

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.F1) 
    { 
     MessageBox.Show("You pressed the F1 key"); 
     return true; // indicate that you handled this keystroke 
    } 

    // Call the base class 
    return base.ProcessCmdKey(ref msg, keyData) 
} 
Cuestiones relacionadas