Windows Forms - нажатие клавиши Enter активирует кнопку отправки?

95

Как я могу фиксировать нажатия клавиш в любом месте формы и заставить их запускать событие кнопки отправки?

FlySwat
источник
8
Так почему бы вам не нажать свойство AcceptButton на ответ Мэтта Гамильтона?
Mukus
используйте this.Form.DefaultButton = MyButton.UniqueID;
Бино Кочумол Варгезе

Ответы:

196

Если вы установите Form«сек AcceptButtonсвойства одного из Buttonсекунды на Form, вы получите такое поведение по умолчанию.

В противном случае, установите KeyPreviewсвойство trueна Formи обрабатывать его KeyDownсобытие. Вы можете проверить наличие Enterключа и предпринять необходимые действия.

Мэтт Гамильтон
источник
8
и не забывайте о CancelButton для обработки нажатия клавиши Escape
WholeLifeLearner
1
Потрясающие! Мне нужно лучше знать мой Framewrok;)
Джек
24
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}
Руви
источник
22

Вы можете обозначить кнопку как «AcceptButton» в свойствах формы, и она будет улавливать любые нажатия клавиш «Enter» в форме и перенаправлять их в этот элемент управления.

См. Раздел Практическое руководство. Назначение кнопки Windows Forms в качестве кнопки принятия с помощью конструктора и обратите внимание на несколько выделенных им исключений (многострочные текстовые поля и т. Д.).

бульвар
источник
Спасибо за ссылку, те исключения, которые меня задерживают.
ubiquibacon
Эта ссылка, кажется, умерла.
JAD
10

Как указывалось ранее, установите свойство AcceptButton своей формы на одну из ее кнопок И установите для свойства DialogResult этой кнопки значение DialogResult.OK , чтобы вызывающий абонент знал, было ли диалоговое окно принято или отклонено.

Сорин Команеску
источник
6

Вы можете подписаться на KeyUpмероприятие TextBox.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}
Санджив
источник
1
Именно то, что я искал. У меня для кнопки dialogresult установлено значение ОК, и я не хотел писать лишний код для работы ENTER!
Kristjan1215
2

Форма имеет свойство KeyPreview, которое можно использовать для перехвата нажатия клавиш.

егоматт
источник
1

Просто используйте

this.Form.DefaultButton = MyButton.UniqueID;  

** Поместите свой идентификатор кнопки вместо MyButton.

Бино Кочумол Варгезе
источник
0

Установите для атрибута KeyPreview в форме значение True, а затем используйте событие KeyPress на уровне формы, чтобы обнаружить клавишу Enter. При обнаружении вызовите любой код для кнопки «отправить».

Билл
источник
0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
BenW
источник