2012-08-04 2 views
10

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

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

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

+6

Это может быть хорошей идеей сделать это на KeyUp (в зависимости от ваших обстоятельств). KeyUp вызывается один раз для каждого раза, когда выдается ключ. Однако keydown вызывается постоянно, пока клавиша не нажата. –

ответ

19

Дайте этому выстрел ...

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

Спасибо, это было очень полезно, достаточно, чтобы узнать фактический синтаксис для себя. Синтаксис для меня был: if (e.Key == Key.Enter) // using System.Windows.Input – user2010136

0

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

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

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

Смежные вопросы