Windows Forms - Enter keypress ativa o botão de envio?

95

Como posso capturar os pressionamentos de tecla Enter em qualquer lugar do meu formulário e forçá-lo a disparar o evento do botão de envio?

FlySwat
fonte
8
Então, por que você não pressiona a propriedade AcceptButton na resposta de Matt Hamilton?
Mukus de
use 'this.Form.DefaultButton = MyButton.UniqueID;'
Bino Kochumol Varghese

Respostas:

196

Se você definir o seu Form's AcceptButtonpropriedade para uma das Buttons no Form, você vai ter que o comportamento por padrão.

Caso contrário, defina a KeyPreviewpropriedade como trueno Forme manipule seu KeyDownevento. Você pode verificar a Enterchave e tomar as medidas necessárias.

Matt Hamilton
fonte
8
e não se esqueça do CancelButton para lidar com o keypress de Escape
WholeLifeLearner
1
Impressionante! Preciso conhecer melhor meu Framewrok;)
Jack
24
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}
ruvi
fonte
22

Você pode designar um botão como o "AcceptButton" nas propriedades do Form e isso irá capturar qualquer pressionamento de tecla "Enter" no formulário e encaminhá-los para esse controle.

Consulte Como: Designar um botão do Windows Forms como o botão Aceitar usando o Designer e observe as poucas exceções que ele descreve (caixas de texto com várias linhas, etc.)

bouvard
fonte
Obrigado pelo link, essas exceções estavam me segurando.
ubiquibacon
Este link parece ter morrido.
JAD
10

Conforme declarado anteriormente, defina a propriedade AcceptButton do formulário como um de seus botões E defina a propriedade DialogResult desse botão como DialogResult.OK , para que o chamador saiba se a caixa de diálogo foi aceita ou descartada.

Sorin Comanescu
fonte
6

Você pode se inscrever no KeyUpevento do TextBox.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}
Sanjeev
fonte
1
É mesmo o que eu procurava. Eu tenho o botão dialogresult definido como OK e não quero escrever um código desnecessário para o ENTER funcionar!
Kristjan1215
2

O Form tem uma propriedade KeyPreview que você pode usar para interceptar o pressionamento de tecla.

itsmatt
fonte
1

Basta usar

this.Form.DefaultButton = MyButton.UniqueID;  

** Coloque o id do botão no lugar de 'MyButton'.

Bino Kochumol Varghese
fonte
0

Defina o atributo KeyPreview no formulário como True e, em seguida, use o evento KeyPress no nível do formulário para detectar a tecla Enter. Na detecção, chame qualquer código que você teria para o botão "enviar".

Conta
fonte
0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
BenW
fonte