Событие KeyDown вызывается только в стандартном TextBox или MaskedTextBox «обычными» клавишами ввода, а не ENTER, TAB и т.
Можно получить специальные ключи, такие как ENTER, переопределив метод IsInputKey:
public class CustomTextBox : System.Windows.Forms.TextBox
{
protected override bool IsInputKey(Keys keyData)
{
if (keyData == Keys.Return)
return true;
return base.IsInputKey(keyData);
}
}
Тогда событие KeyDown можно использовать следующим образом:
CustomTextBox ctb = new CustomTextBox();
ctb.KeyDown += new KeyEventHandler(tb_KeyDown);
private void tb_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//Enter key is down
//Capture the text
if (sender is TextBox)
{
TextBox txb = (TextBox)sender;
MessageBox.Show(txb.Text);
}
}
}