visual vaya una tecla siguiente que presionar presionada eventos evento ejecutar detectar campo boton asignar c# winforms

vaya - presionar enter en un textbox y ejecutar el evento de un boton c#



¿Por qué las teclas Enter y Space se comportan de manera diferente para los botones? (2)

Por lo que sé, estas son las únicas teclas que reaccionan cuando un botón tiene el enfoque.

Al presionar Intro al instante, se "hace clic" en el botón, incluso si se mantiene presionada la tecla. (Así que el ''clic'' ocurre en KeyDown).

Presionar Espacio actúa más como un clic normal del ratón; mantenerlo presionado no activa el evento Click, pero lo hace una vez que lo sueltas. (Por lo tanto, el ''clic'' ocurre en KeyUp o KeyPressed.)

¿Por qué la diferencia? Me gustaría un buen artículo sobre el tema o simplemente una explicación lógica de por qué esas dos claves tienen un comportamiento diferente. ¡Seguro que hay una explicación por ahí!


Estás viendo dos comportamientos diferentes, que no están asociados, excepto que ambos tratan con los eventos del teclado en una forma de victoria.

Entrar es especial porque es la pulsación de tecla para activar el acceptButton de un formulario. De hecho, se perdió otra tecla que puede afectar a los botones: Esc es el cancelButton , y también lanzará eventos.

Como explicó PhaDaPhunk, Space es un MouseClick para cualquier componente que acepte un MouseClick, pero no he encontrado una explicación detallada para ello. Supongo que es el comportamiento predeterminado de todos los controles. La guía de accessibility Microsoft parece implicar que esto es así en su sección sobre navegación basada en teclado.

Por cierto, esta entrada de la base de conocimientos de soporte de Microsoft parece mostrar que la implementación de la barra espaciadora pasó de Button.Click a Button.MouseClick. Tal vez esa es la razón de su comportamiento diferente.


No puedo encontrar ningún artículo que explique esto y es una muy buena pregunta. Personalmente creo que es por motivos de funcionalidad.

Tecla Intro: el AcceptButton clásico actúa como un FullClick (Click / ClickReleased), por lo que si lo mantiene, tendrá el efecto de hacer clic varias veces.

Sin embargo, el espacio es un SingleClick (Sin liberación de clic hasta que SingleClick la tecla), por lo que puede realizar una tarea en la que solo se requiere un Click sin ClickRelease y acciones donde solo se requiere la selección de un control para activarlo. Al igual que los CheckBox o RadioButtons que no se pueden activar con la tecla Intro, pero se pueden activar con el espacio como si se hiciera clic en él.

En conclusión, el espacio sería el MouseClick oficial, ya que tiene los mismos efectos que un mouseClick presionando o soltando. Ingresar sería una especie de acceso directo para un clic con un clic completo . Todo, por supuesto, en la idea de dar más posibilidades al propio teclado.