Estoy trabajando con una aplicación WinForm en C#, después de que escribo algo en un cuadro de texto Quiero presionar la tecla Enter pero el cuadro de texto aún tiene foco (el cursor parpadeante sigue en el cuadro de texto), ¿cómo puedo lograrlo?C# ¿Cómo hago clic en un botón presionando Enter mientras el cuadro de texto tiene foco?
Respuesta
La opción simple es sólo para establecer AcceptButton de las formas que el botón que desea presionado (por lo general en "OK", etc):
TextBox tb = new TextBox();
Button btn = new Button { Dock = DockStyle.Bottom };
btn.Click += delegate { Debug.WriteLine("Submit: " + tb.Text); };
Application.Run(new Form { AcceptButton = btn, Controls = { tb, btn } });
Si esto no es una opción, se puede ver en el evento KeyDown etc, pero que es más trabajo ...
TextBox tb = new TextBox();
Button btn = new Button { Dock = DockStyle.Bottom };
btn.Click += delegate { Debug.WriteLine("Submit: " + tb.Text); };
tb.KeyDown += (sender,args) => {
if (args.KeyCode == Keys.Return)
{
btn.PerformClick();
}
};
Application.Run(new Form { Controls = { tb, btn } });
la manera habitual de hacer esto es para establecer el Form
's AcceptButton
al botón que desea 'clic'. Puede hacerlo en el diseñador VS o en el código y el AcceptButton
se puede cambiar en cualquier momento.
Esto puede o no ser aplicable a su situación, pero he usado esto junto con GotFocus
eventos para diferentes TextBox
es en mi formulario para permitir un comportamiento diferente según el lugar donde el usuario presiona Enter. Por ejemplo:
void TextBox1_GotFocus(object sender, EventArgs e)
{
this.AcceptButton = ProcessTextBox1;
}
void TextBox2_GotFocus(object sender, EventArgs e)
{
this.AcceptButton = ProcessTextBox2;
}
Una cosa a tener cuidado al usar este método es que no dejar el conjunto AcceptButton
a ProcessTextBox1
cuando TextBox3
se enfoca. Recomendaría utilizar el evento LostFocus
en el TextBox
que establece el AcceptButton
, o crear un método GotFocus
que todos los controles que no usan una llamada específica AcceptButton
.
Puede interceptar en el evento keyup http://www.itjungles.com/dotnet/c-how-to-easily-detect-enter-key-in-textbox-and-execute-a-method
Esto es muy válida para Windows Forms. Sin embargo, en WPF necesita hacer las cosas de manera diferente, y es más fácil. Establezca IsDefault propiedad del botón relevante para esta área de texto como verdadera.
Una vez que haya terminado de capturar la tecla Intro, no olvide alternar las propiedades en consecuencia.
Me encontré con esto mientras buscaba lo mismo, y lo que observo es que ninguna de las respuestas enumeradas en realidad proporciona una solución cuando no desea hacer clic en 'aceptar botón' en un formulario al presionar enter.
Un caso de uso simple sería un cuadro de búsqueda de texto en una pantalla donde presionar enter debería 'hacer clic' en el botón 'Buscar', no ejecutar el comportamiento AcceptButton del formulario.
Este pequeño fragmento hará el truco;
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
if (!textBox.AcceptsReturn)
{
button1.PerformClick();
}
}
}
En mi caso, este código es parte de un control de usuario personalizada derivada de cuadro de texto y el control de la propiedad tiene un 'ClickThisButtonOnEnter'. Pero lo anterior es una solución más general.
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
button.PerformClick();
// these last two lines will stop the beep sound
e.SuppressKeyPress = true;
e.Handled = true;
}
}
Enlazar este evento KeyDown al cuadro de texto y, a continuación, cuando cada vez que se pulsa una tecla, se disparó este evento.Dentro del evento, comprobamos si el usuario ha pulsado tecla "Enter", si es así, se puede realizar la acción
¿Podría agregar alguna explicación? –
Prefiero esta respuesta, es de lejos la más simple. – chwi
¿Por qué no usar simplemente * Botón Aceptar *? –
solución más amigable para los principiantes es: 1. en su Designer, haga clic en el campo de texto que desea que esto ocurra . En la ventana de propiedades (predeterminado: abajo a la derecha), haga clic en Thunderbolt (Eventos). Este ícono está al lado del ícono de ordenamiento alfabético y el ícono de propiedades.
2. desplácese hacia abajo hasta keyDown. Haga clic en el campo desplegable que se encuentra a la derecha. Notarás que no hay nada allí, así que simplemente presiona enter. Visual Studio le escriba el siguiente código:
private void yourNameOfTextbox_KeyDown(object sender, KeyEventArgs e)
{
}
3. entonces simplemente pegar esta entre los corchetes:
if (e.KeyCode == Keys.Enter)
{
yourNameOfButton.PerformClick();
}
esto actuará como lo habría hecho clic en él.
¡salud! phil
Simplemente configure el formulario "Acepte el botón" Propiedad al botón que desea presionar la tecla Intro. O en el caso de carga de escritura this.acceptbutton = btnName;
solución perfecta para mí. Gracias – Nuno
this.textboxName.KeyDown += (sender, args) => {
if (args.KeyCode == Keys.Return)
{
buttonName.PerformClick();
}
};
Esto, unido al método initialize
O simplemente puede utilizar este sencillo código de revestimiento 2 :)
if (e.KeyCode == Keys.Enter)
button1.PerformClick();
- 1. Cómo asociar presionando "enter" con hacer clic en el botón?
- 2. Ejecutar la función cuando se presiona enter si el cuadro de texto tiene foco
- 3. ¿Es posible hacer clic en un botón sin perder el foco en un cuadro de texto?
- 4. Enviar datos desde el área de texto presionando "Enter"
- 5. Mantener el foco en el cuadro de texto después de presionar enter
- 6. Presiona presionando Enter en un formulario de Windows
- 7. C# ¿cómo puedo seleccionar todo el texto en un cuadro de texto cuando hago doble clic?
- 8. foco en el cuadro de texto
- 9. Cómo cambiar el texto de un TextView presionando un botón
- 10. Usando el código C# para simular el llenado del cuadro de texto y presionando el botón
- 11. ¿Cómo borrar un cuadro de texto en el foco?
- 12. Cursor Enfocar en cuadro de texto en WPF/C#
- 13. ¿Cómo abrir la cámara mientras hago clic en el botón UIButton en el iPhone?
- 14. Enlazar el cuadro de texto a la tecla 'enter'
- 15. Activar un evento en `clic` y` enter`
- 16. Javascript presentar cuadro de texto en ENTER
- 17. cómo establecer el foco en el cuadro de texto en un formulario de diálogo usando C#
- 18. cómo actualizar el resumen existente de EditTextPreference cuando hago clic en el botón Aceptar
- 19. Viendo resultado en un cuadro de texto en un botón de clic (ASP.Net)
- 20. abrir un cuadro de diálogo cuando hago clic en un botón
- 21. ¿Cómo abrir Windows Explorer cuando hago clic en un botón?
- 22. ¿Cómo hago un cuadro de texto en expansión?
- 23. ¿Cómo establecer el foco de entrada en un cuadro de diálogo mostrado en Qt?
- 24. Detener que un cuadro de texto WPF pierda el foco
- 25. cómo invocar un evento después de perder el foco de un cuadro de texto, asp.net mvc
- 26. ¿Cómo determinar qué control en la forma tiene foco?
- 27. cómo resaltar/seleccionar texto en un cuadro de texto wpf sin foco?
- 28. Seleccionar ListBoxItem si Cuadro de texto en ItemTemplate obtiene foco
- 29. Cómo saltear Validar después de hacer clic en el botón Cancelar de un formulario
- 30. Evento JQuery para usuario presionando Entrar en un cuadro de texto?
+1 Mejor respuesta que pienso! – GETah