Windows Forms - ¿La pulsación de la tecla Intro activa el botón de envío?

95

¿Cómo puedo capturar las pulsaciones de tecla de entrada en cualquier lugar de mi formulario y forzarlo a activar el evento del botón de envío?

FlySwat
fuente
8
Entonces, ¿por qué no presionas la propiedad AcceptButton en la respuesta de Matt Hamilton?
Mukus
use 'this.Form.DefaultButton = MyButton.UniqueID;'
Bino Kochumol Varghese

Respuestas:

196

Si establece la Form's AcceptButtonpropiedad a uno de los Buttons en el Form, obtendrá que el comportamiento por defecto.

De lo contrario, establezca la KeyPreviewpropiedad trueen Formy controle su KeyDownevento. Puede buscar la Enterclave y realizar las acciones necesarias.

Matt Hamilton
fuente
8
y no se olvide de CancelButton para manejar la pulsación de la tecla Escape
WholeLifeLearner
1
¡Increíble! Necesito conocer mejor mi Framewrok;)
Jack
24
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}
ruvi
fuente
22

Puede designar un botón como "AcceptButton" en las propiedades del formulario y eso detectará cualquier pulsación de tecla "Enter" en el formulario y las enrutará a ese control.

Consulte Cómo: Designar un botón de Windows Forms como el botón Aceptar utilizando el Diseñador y observe las pocas excepciones que describe (cuadros de texto de varias líneas, etc.)

bouvard
fuente
Gracias por el enlace, esas excepciones me estaban deteniendo.
ubiquibacon
Este enlace parece haber muerto.
JAD
10

Como se indicó anteriormente, establezca la propiedad AcceptButton de su formulario en uno de sus botones Y establezca la propiedad DialogResult para ese botón en DialogResult.OK , para que la persona que llama sepa si el diálogo fue aceptado o descartado.

Sorin Comanescu
fuente
6

Puedes suscribirte al KeyUpevento del TextBox.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}
Sanjeev
fuente
1
justo lo que estaba buscando. ¡Tengo el resultado de diálogo del botón configurado en OK y no quería escribir código innecesario para que ENTER funcione!
Kristjan1215
2

El formulario tiene una propiedad KeyPreview que puede utilizar para interceptar la pulsación de tecla.

itsmatt
fuente
1

Simplemente use

this.Form.DefaultButton = MyButton.UniqueID;  

** Pon tu identificación de botón en lugar de 'MyButton'.

Bino Kochumol Varghese
fuente
0

Establezca el atributo KeyPreview en su formulario en True, luego use el evento KeyPress en su nivel de formulario para detectar la tecla Enter. Al detectarlo, llame al código que tenga para el botón "enviar".

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