#c# #winforms
#c# #winforms — формы
Вопрос:
Я создал калькулятор на c # Winform, в нем есть кнопки для ввода числовых значений. Я хочу, чтобы операция нажатия кнопок выполнялась нажатием клавиши клавиатуры. Например, когда я нажимаю «1» на клавиатуре, он обрабатывает операцию нажатия кнопки «button1».
Я уже пробовал
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control amp;amp; e.KeyCode == Keys.NumPad0)
{
button1.PerformClick();
}
}
Но это никак не влияет на мою программу.
Комментарии:
1. Зачем вы тестируете
e.Control
?2. См social.technet.microsoft.com/wiki/contents/articles/…
3. Удалить
e.Control
. Значения Keys.NumPadX являются последовательными, что означает, что вы можете получить числовое значение путем вычитанияNumPad0
изKeyCode
, если оно находится междуNumPad0
иNumPad9
, например :if (e.KeyCode>=Keys.NumPad0 amp;amp; e.KeyCode<=Keys.NumPad9){ var number=e.KeyCode-Keys.NumPad0;}
4. Функция keydown не выбрана в свойствах события формы для KeyDown, поэтому она не работала. Теперь все в порядке, но я все равно не могу назначить клавишу ВВОДА моей кнопке «равно». Я пытался использовать форму acceptbutton и keys.enter, но они не работают.
Ответ №1:
пожалуйста, попробуйте это
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.NumPad1)
{
button1.PerformClick();
}
}