2012-08-16 22 views
7

Tengo el siguiente código que no muestra el MessageBox cuando se presiona enter/return.Detect Enter Key C#

Para cualquier otra tecla (es decir, letras/números) el MessageBox muestra False.

private void cbServer_TextChanged(object sender, EventArgs e) 
{ 
    if (enterPressed) 
    { 
     MessageBox.Show("Enter pressed"); 
    } 
    else 
     MessageBox.Show("False"); 
} 

private void cbServer_Keydown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return) 
    { 
     enterPressed = true; 
     MessageBox.Show("Enter presssed: " + enterPressed); 

    } 
    else 
     enterPressed = false; 
} 

¿Alguna idea?

EDIT: Por encima del código, pensé que el problema era con _Keydown, así que solo lo publiqué.

+6

¿Cómo funciona el mensaje de cuadro de la demostración falsa. No lo veo –

+0

También. ¿Has probado la depuración? Debe usar OEMReturn o lo que también es –

+0

¿Qué tipo de control es cbServer? un combobox? y es una aplicación wpf o winforms? – Steve

Respuesta

5

Esto es porque cuando usted presiona IngreseTextChanged evento no se disparará.

+0

Gracias, lo tengo ordenado. – k1f1

7

en su clase de diseñador de formularios (formname.designer.cs) añadir lo siguiente:

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

y añadir el código al código espina dorsal (formname.cs):

void Login_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == (char)13) 
      MessageBox.Show("ENTER has been pressed!"); 
     else if (e.KeyChar == (char)27) 
      this.Close(); 
    } 
+0

También maneja la tecla Escape para cerrar su formulario, creo que puede ser útil –

+0

this.cbServer.KeyPress + = new System.Windows.Forms.KeyPressEventHandler (this .cbServer_KeyPress); Esto ya estaba en el archivo designer.cs ... – k1f1

+0

Lo siento, veo que está utilizando Keypress, no KeyDown .. Trataré de usar eso, gracias – k1f1

0
private void textBox_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
      if (e.Key == Key.Enter) 
      { 
       MessageBox.Show("Enter key pressed"); 
      } 
      else if (e.Key == Key.Space) 
      { 
       MessageBox.Show("Space key pressed"); 
      } 
} 

caso Uso PreviewKeyDown para detectar cualquier tecla antes de que se muestra en la caja de texto o la entrada