Вы не можете зафиксировать клавишу Enter в событиях нажатия клавиши формы, потому что она обрабатывается кнопкой.
Если вы добавляете:
private void button_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.IsInputKey = true;
}
}
к кнопке, тогда клавиша Enterне будет вызывать нажатие кнопки, и вы увидите событие Form_KeyDown для нее.
Вы не хотите добавлять это к каждой кнопке, поэтому создайте простой UserControl, который будет просто кнопкой с этимдобавлен код.
Обновление
Это не работает для пробела.Если вы установите form.KeyPreview = true
и добавите:
private void form_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
e.Handled = true;
}
}
, пробел не будет нажимать кнопку, но все равно будет работать в текстовых полях.
Я не знаю, почему пробели Enter ведут себя по-разному.