2010-04-03 17 views
6

estoy tratando de añadir un evento "KeyPress" en un cuadro de texto (WinForm)¿Falta el evento "KeyPress" para WinForms?

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckKeys); 

y aquí está dentro de la 'CheckKeys':

private void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)13) 
    { 
     // Enter is pressed - do something 

    } 
} 

La idea aquí es que una vez que un cuadro de texto está en enfoque y se presionó el botón 'Entrar', sucederá algo ...

Sin embargo, mi máquina no puede encontrar el evento 'KeyPress'. ¿Hay algún problema con mis códigos?

ACTUALIZACIÓN:

También probé poniendo KeyDown en lugar de pulsar las teclas:

private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 

    if (e.Key == Key.Return) 

     // Enter is pressed - do something 
    } 
} 

Todavía no funciona aunque ...

+1

Ha intentado buscar KeyDown? – Chris

+1

Esto debería funcionar: ¿está seguro de estar suscrito a su controlador CheckKeys en el lugar correcto? ¿Qué sucede si coloca MessageBox.Show (e.KeyChar.ToString()) en su controlador - ¿detecta algún evento? – pduncan

+0

@Chris: no funciona. Estaba intentando crear un evento similar a hacer clic en un botón presionando Enter. – abramlimpin

Respuesta

9

Está mezclando bibliotecas de clases, no usa clases de Windows Forms en un proyecto de WPF. Haga que se vea así:

public partial class Window1 : Window { 
    public Window1() { 
     InitializeComponent(); 
     this.textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown); 
    } 

    private void textBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.Key == Key.Enter) { 
     MessageBox.Show("Enter!"); 
     e.Handled = true; 
     } 
    } 
    } 
6

¿Ha mirado el documentation en KeyPress? Establece específicamente que El evento KeyPress no se genera mediante claves que no son caracteres; sin embargo, las claves que no son caracteres plantean los eventos KeyDown y KeyUp. Usar uno de esos eventos debería funcionar.

+0

@Anders: intenté usar KeyDown en su lugar. Intenté llamar a Storyboard (de WPF) presionando Enter, pero no pasó nada. – abramlimpin

-4

intente siguiendo los pasos que funcionará, bcoz lo he probado.

  1. seleccione el cuadro de texto, haga clic derecho sobre él, luego haga clic en Propiedades.
  2. clic en el evento, a continuación, haga doble clic en KeyPress
  3. a continuación, escriba el siguiente código.

    private void textBox2_KeyPress(object sender, KeyPressEventArgs e) 
    { 
        if (e.KeyChar == (char)13) 
        {    
         //press Enter do Something Like i have messagebox below to show "wow" 
         MessageBox.Show("wow"); 
        } 
        else 
        { 
        } 
    } 
    
+4

Funciona * porque * usted lo probó? –

Cuestiones relacionadas