2012-08-16 6 views
7

Ich habe den folgenden Code, der die MessageBox nicht anzeigt, wenn Enter/Return gedrückt wird.Erkennen der Eingabetaste C#

Für jeden anderen Schlüssel (d. H. Buchstaben/Zahlen) zeigt die MessageBox 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; 
} 

Irgendwelche Ideen?

EDIT: Oben Code, dachte ich, das Problem war mit dem _Keydown, auch, so dass ich nur das gepostet.

+6

zu erfassen Wie funktioniert das Meldungsfeld zeigen false. Ich sehe es nicht –

+0

Auch. Hast du das Debuggen probiert? Sie sollten OEMReturn verwenden oder was es auch ist –

+0

Welche Art von Kontrolle ist cbServer? eine Combobox? und ist eine wpf oder winforms app? – Steve

Antwort

5

Dies liegt daran, wenn Sie drücken Geben SieTextChanged Ereignis wird nicht ausgelöst.

+0

Danke, habe es sortiert. – k1f1

7

in Ihrem Formular-Designer-Klasse (formname.designer.cs) fügen Sie diese:

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

und den Code zu Backbone-Code hinzufügen (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

scheint es handhaben auch Schlüssel-Entfliehen Sie Formular zu schließen, ich denke, es kann sinnvoll ist sein –

+0

this.cbServer.KeyPress + = new System.Windows.Forms.KeyPressEventHandler (dies .cbServer_KeyPress); Dies war bereits in der Datei designer.cs ... – k1f1

+0

Leider sehe ich, dass unter Verwendung von Keypress KeyDown nicht .. Werden versuchen, dass die Verwendung dank – 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"); 
      } 
} 

Verwenden PreviewKeyDown Ereignis eine beliebige Taste, bevor in Textbox oder Eingabe gezeigt

Verwandte Themen