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?


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.


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();
}

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.)


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.


6

Você pode se inscrever no KeyUpevento do TextBox.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}

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.



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".


0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.