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.