Как я могу указать, когда клавиша ввода нажата в TextBox?

В принципе, я хочу, чтобы иметь возможность запускать событие при нажатии клавиши ENTER. Я уже пробовал это:

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

Но MessageBox никогда не появляется. Как я могу это сделать?

Ответ 1

Дайте этот снимок...

private void input_KeyDown(object sender, KeyEventArgs e) 
{                        
    if(e.KeyData == Keys.Enter)   
    {  
        MessageBox.Show("Pressed enter.");  
    }             
}

Ответ 2

Чтобы добавить в ответ @Willy David Jr: вы также можете использовать реальные коды клавиш.

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

Ответ 3

Вы можете просто сказать

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

Ответ 4

Вы можете использовать событие 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)
    }
}

Ответ 5

Вы также можете сделать это:

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

Единственное отличие от KeyCode vs KeyData заключается в том, что KeyCode может обнаруживать комбинацию модификаторов с KeyCode (например, CTRL, Shift + A), которые вам здесь не нужны.

Ответ 6

Dears,

Извините, но ни один из этих методов не распознает нажатие клавиши "Enter". Я перепробовал их все, и они не работают. В чем может быть причина?