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


95

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


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



0

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.