检测输入密钥C#

问题描述:

我有下面的代码,当按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

这是因为当您按输入TextChanged事件不会触发。

+0

谢谢,把它分类。 – k1f1 2012-08-16 10:30:52

(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

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事件检测文本框或输入