EDIT
Заметил, что мне нужно прояснить, что я имею в виду ...
Из кода, который вы опубликовали, я подозреваю, что у вас есть 9 элементов управления, к которым вы добавили ключевые события. Эти элементы управления будут получать ключевые события только тогда, когда они сфокусированы.
Чтобы обрабатывать ключи глобально для формы, вы должны установить Form.KeyPreview
на true
. Кроме того, я не буду обрабатывать ключи так, как вы, но добавлю событие Form.KeyDown
и напишу что-то вроде:
switch (e.KeyCode)
{
case Keys.NumPad9:
e.Handled = true;
button3.PerformClick();
break;
case Keys.NumPad8:
e.Handled = true;
button2.PerformClick();
break;
// And so on
}
Это будет обрабатывать NumPad-ключи в форме - тогда вы сможете удалить все обработчики событий, которые вы отправили в своем вопросе.
Чтобы программно «нажать» кнопку, вы должны использовать метод Button.PerformClick()
, так как к событию щелчка может быть добавлено несколько обработчиков событий, которые в противном случае не будут вызываться.
РЕДАКТИРОВАТЬ 2
Синтаксис для switch
-основания неверен. Конечно, каждое «дело» должно начинаться с ключевого слова case
... Теперь оно должно работать.