¿Hay alguna manera de iniciar un método en C# si se presiona una tecla? Por ejemplo, Esc?Presione la tecla Escape para llamar al método
Respuesta
Estoy escribiendo la aplicación WinForms. Usuario rellena el cuadro de texto y si quiere eliminar todo, él simplemente hace clic ESC en el teclado
Creo que se necesita para manejar the KeyDown event.
También querrá establecer la propiedad del formulario 'KeyPreview' en ** True ** para capturar eventos de KeyPress – whiteshooz
¿Está escribiendo una aplicación de consola, una aplicación de WinForms u otra cosa? ¿Está tratando de capturar la clave ESC en todo momento (independientemente de la ventana/aplicación enfocada) u otra cosa?
Más contexto necesario.
Si estás escribiendo una aplicación de consola, entonces debería empezar a ver cosas como Console.ReadKey ...
http://msdn.microsoft.com/en-us/library/system.console.readkey.aspx
Estoy escribiendo la aplicación WinForms. El usuario llena el cuadro de texto y si quiere borrarlo todo, simplemente hace clic en la tecla esc en el teclado – raimis
utilizar el evento OnKeyPress de su cuadro de texto y en caso
if(e.KeyCode==Keys.Escape)
{
yourTextBox.Text = string.Empty;
}
gracioso, esto no parece funcionar del todo, ¿y tiene cinco votos al alza? 'private void Form1_KeyDown (remitente del objeto, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) {...' Esto funciona. Pero e.KeyChar es un tipo de carácter, Keys.Escape no lo es y el operador == no se puede aplicar. –
@MasterPeter de hecho, era KeyCode ... – Gregoire
para trabajar con este código necesita Form.KeyPreview = true; –
Como han mencionado otros, maneje el evento KeyDown
o KeyUp
del control apropiado. El evento KeyPress
funcionaría para la tecla de Escape así, a pesar de que no se disparará para algunas teclas, como Shift,Ctrl o ALt.
Si desea ejecutar esta función cada vez que el usuario presione la tecla Escape, entonces es probable que desee manejar el evento en el formulario. Si hace esto, probablemente también quiera establecer la propiedad KeyPreview
del Formulario en verdadero. Esto permitirá que el control de Formulario reciba el evento incluso si el foco está actualmente dentro de uno de los controles secundarios.
Si desea que el comportamiento sea específico para un control, tales como la limpieza del texto dentro de un cuadro de texto que está seleccionado actualmente, entonces usted debe controlar el evento KeyDown
o KeyUp
del control TextBox
. De esta forma, su controlador de eventos no se activará si el usuario presiona la tecla de escape fuera del cuadro de texto.
En algunas situaciones, es posible que desee evitar que los controles secundarios manejen el mismo evento que acaba de manejar. Puede utilizar la propiedad SuppressKeyPress
en la clase KeyEventArgs
para controlar este comportamiento:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
MessageBox.Show("Escape key pressed");
// prevent child controls from handling this event as well
e.SuppressKeyPress = true;
}
}
¡Gracias por la útil sugerencia para KeyPreview! – Peopleware
debe de cambiar la forma de propiedad "TeclaDePresentaciónPreliminar" true o no se disparará sus eventos. Manejar estos eventos solo no hará nada, aunque los eventos sean correctos. Te parecerá que realmente no pasa nada aunque hayas suscrito los controladores de eventos adecuados.
Con evento KeyPress ...
//Escape
if (e.KeyChar == '')
{
this.DialogResult = DialogResult.Cancel;
e.Handled = true;
}
'(char) Keys.Escape' es lo mismo que' '\ x1B'' es lo mismo que '(char) 27' pero ** no es lo mismo que **'' '' – xmojmr
También puede utilizar el evento KeyUp. Yo lo prefiero sin embargo.
private void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) {
if (e.Key == Key.Escape) {
//WHAT WILL HAPPEN INSERT HERE
}
}
Primero en propiedades no> TeclaDePresentaciónPreliminar: True
continuación:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
//call your method here
}
}
En caso de que alguien estaba buscando la forma de hacerlo en una aplicación consola
if (Console.ReadKey().Key == ConsoleKey.Escape)
{
return;
}
- 1. Android - Obtener la tecla del teclado presione
- 2. Python, presione cualquier tecla para salir
- 3. Cómo capturar la tecla Entrar, presione GtkEntry
- 4. Presione una tecla con Java
- 5. ¿Cómo cerrar un formulario al presionar la tecla de escape?
- 6. Presione Enter para pasar al siguiente control
- 7. Usar Javascript para cambiar qué envío está activado al introducir la tecla, presione
- 8. Cómo convertir una tecla Intro Pulse en una pestaña Presione la tecla para páginas web
- 9. tecla de función de manejo presione
- 10. Método de Python para leer la pulsación de tecla?
- 11. Seleccione el campo NEXT en la tecla Intro Presione
- 12. Visual Studio 2010 "Presione cualquier tecla para continuar ..." no muestra
- 13. Minimice la actividad en la tecla Atrás, presione
- 14. Comando para llamar al método desde viewmodel
- 15. Llamar al método AppDelegate de la clase
- 16. Invocar evento de pulsación de tecla de escape por jquery
- 17. ¿Cómo compila VS las aplicaciones de la consola para mostrar "Presione cualquier tecla para continuar"?
- 18. Simular tecla de tabulación Presione en SDK de iOS
- 19. hay una forma de utilizar la entrada ("Presione cualquier tecla para continuar") en la versión 2.6
- 20. Cómo esperar a que se presione una tecla en Clojure
- 21. PHP5.3: error de "Llamar al método indefinido" al llamar a invocar desde la variable de clase
- 22. CombineLatest, pero solo presione para la izquierda
- 23. F # abreviada para llamar al método de objeto en lambda
- 24. Cómo llamar al método didSelectRowAtIndexPath con UITapGestureRecognizer?
- 25. Error: Intento llamar al método privado
- 26. Llamar al método estático genérico en PowerShell
- 27. Comprobar condición antes de llamar al método
- 28. Mockito: intentar espiar el método es llamar al método original
- 29. ¿Cómo llamar al método usando su nombre?
- 30. acceso a método denegado al llamar al método protegido de la subclase java
usando que? ¿Consola? ¿Formar? ASP.NET? – Gregoire
estoy usando formularios – raimis
Tenga en cuenta que si su formulario tiene un ['CancelButton'] (http://msdn.microsoft.com/library/system.windows.forms.form.cancelbutton.aspx) configurado, a continuación, presionando ** ESC ** hará clic automáticamente en este botón. Dependiendo de sus requisitos, este puede ser un buen enfoque. –