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?


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.


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

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


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.


6

Puedes suscribirte al KeyUpevento del TextBox.

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

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.


1

Simplemente use

this.Form.DefaultButton = MyButton.UniqueID;  

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


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


0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.