33

基本上,我希望能够在ENTER按下键时触发事件。我已经试过了:

private void input_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Equals("{ENTER}"))
        {
            MessageBox.Show("Pressed enter.");
        }
    }

但是 MessageBox 永远不会出现。我怎样才能做到这一点?

4

6 回答 6

43

试一试...

private void input_KeyDown(object sender, KeyEventArgs e) 
{                        
    if(e.KeyData == Keys.Enter)   
    {  
        MessageBox.Show("Pressed enter.");  
    }             
}
于 2012-08-04T05:29:26.307 回答
5

要添加到@Willy David Jr 答案:您也可以使用实际的密钥代码。

private void input_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyChar == 13)
    {
        MessageBox.Show("Pressed enter.");
    }
}
于 2018-05-14T12:46:58.947 回答
3

你实际上可以说

private void input_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        MessageBox.Show("Pressed enter.");
    }
}
于 2018-06-05T12:47:28.963 回答
3

您可以使用 Keypress 事件。如果您只是在寻找“Enter”按键,那么您可能并不关心修饰键(例如 Shift 和/或 Ctrl),这就是为什么大多数人会使用 KeyDown 而不是 Keypress。第二个好处是回答在实施任何其他答案后几乎总是被问到的问题:“当我使用引用的代码时,为什么按“Enter”会发出哔声?” 这是因为需要处理 Keypress 事件。通过使用 Keypress,您可以在一处解决这两个问题:

private void input_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
        // Your logic here....
        e.Handled = true; //Handle the Keypress event (suppress the Beep)
    }
}
于 2018-09-12T00:57:10.100 回答
3

如果您的表单定义了 AcceptButton,您将无法使用 KeyDown 来捕获 Enter。

您应该做的是在表单级别捕获它。将此代码添加到表单:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if ((this.ActiveControl == myTextBox) && (keyData == Keys.Return))
    {
        //do something
        return true;
    }
    else
    {
        return base.ProcessCmdKey(ref msg, keyData);
    }
}
于 2019-03-02T16:26:37.587 回答
0

你也可以这样做:

  private void input_KeyDown(object sender, KeyEventArgs e) 
  {                        
    if(e.KeyCode== Keys.Enter)   
    {  
        //Your business logic here.
    }             
  }

KeyCode与vs的唯一区别KeyData是,它可以检测与此处不需要的KeyCode修饰符组合(例如 CTRL、Shift + A)。KeyCode

于 2017-10-05T10:09:59.213 回答