2012-08-16 4 views
7

Ho il seguente codice che non mostra il MessageBox quando si preme invio/ritorno.Rileva tasto Invio C#

Per qualsiasi altro tasto (cioè lettere/numeri) il MessageBox mostra 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; 
} 

Qualche idea?

MODIFICA: sopra codice, ho pensato che il problema era con _Keydown anche così ho postato solo quello.

+6

Come funziona la casella Mostra messaggio falso. Io non lo vedo anche –

+0

. Hai provato il debug? Si dovrebbe usare OEMReturn o cosa è anche –

+0

Che tipo di controllo è cbServer? una casella combinata? ed è un'app wpf o winforms? – Steve

risposta

5

Questo perché quando si preme ImmettereTextChanged l'evento non viene attivato.

+0

Grazie, ho risolto il problema. – k1f1

7

nel modulo di classe di progettazione (formname.designer.cs) Aggiungere questo:

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

e aggiungere questo codice al codice di backbone (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

si gestisce anche il tasto ESC per chiudere il modulo, penso che potrebbe essere utile –

+0

this.cbServer.KeyPress + = nuovo System.Windows.Forms.KeyPressEventHandler (questo .cbServer_KeyPress); Questo era già nel file designer.cs ... – k1f1

+0

Scusa se vedo che sta usando Keypress non KeyDown .. Proveremo ad usarlo, grazie – 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"); 
      } 
} 

evento Usa PreviewKeyDown per rilevare eventuali tasto prima mostrato in testo o ingresso