2012-08-16 189 views
7

我有下面的代碼,當按enter/return時不顯示MessageBox。檢測輸入密鑰C#

對於任何其他鍵(即字母/數字),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; 
} 

任何想法?

編輯:上面的代碼,我認爲這個問題是與_Keydown,所以我只是張貼。

在窗體設計器類
+6

如何在消息框中顯示錯誤顯示之前的任何鍵。我沒有看到它 – 2012-08-16 09:28:07

+0

另外。你嘗試過調試嗎?您應該使用OEMReturn或它也是什麼 – 2012-08-16 09:29:05

+0

cbServer是什麼類型的控件?一個組合框?並且是一個wpf或winforms應用程序? – Steve 2012-08-16 09:30:28

回答

5

這是因爲當您按輸入TextChanged事件不會觸發。

+0

謝謝,把它分類。 – k1f1 2012-08-16 10:30:52

7

(formname.designer.cs)補充一點:

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

這個代碼添加到骨幹代碼(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

它也處理退出鍵來關閉您的窗體,我認爲這可能是有用的 – 2012-08-16 09:30:28

+0

this.cbServer.KeyPress + = new System.Windows.Forms.KeyPressEventHandler(this .cbServer_KeyPress);這已經在designer.cs文件中... – k1f1 2012-08-16 09:42:42

+0

對不起,我看到的是使用按鍵不KeyDown ..將嘗試使用,謝謝 – k1f1 2012-08-16 09:45:30

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"); 
      } 
} 

使用PreviewKeyDown事件檢測文本框或輸入