3
respostas

Diferença entre KeyDown e KeyPress

Bom dia, Tudo bem?

Qual seria a diferença entre entre KeyDown e KeyPress? Não consegui entender.

3 respostas

Oi Julia,

A diferença entre KeyDown e KeyPress reside no momento em que cada evento é disparado e no tipo de informação que eles fornecem. 💪

  • KeyDown: Este evento é acionado quando uma tecla é pressionada, independentemente de qual tecla seja (incluindo teclas de função, setas, etc.). Ele fornece informações sobre a tecla física que foi pressionada, através do código da tecla (KeyCode). É útil para capturar eventos de teclas que não geram caracteres imprimíveis. 💻

  • KeyPress: Este evento é acionado após o evento KeyDown, mas apenas se a tecla pressionada gerar um caractere imprimível. Ele fornece o código do caractere (AsciiCode) correspondente à tecla pressionada, levando em consideração o layout do teclado e as teclas modificadoras (Shift, Ctrl, Alt). É útil para capturar a entrada de texto. 📝

Em resumo, KeyDown lida com a ação física de pressionar uma tecla, enquanto KeyPress lida com o caractere resultante dessa ação. 👍

Exemplo prático:

Imagine que você pressione a tecla "A" no seu teclado.

  1. O evento KeyDown é disparado primeiro, informando que a tecla "A" (ou o código da tecla correspondente) foi pressionada.
  2. Em seguida, o evento KeyPress é disparado, informando que o caractere "a" (ou o código ASCII correspondente) foi gerado.

Se você pressionar a tecla "PAGEUP" ou "PAGEDOWN", apenas o evento KeyDown será disparado, pois essas teclas não geram caracteres imprimíveis. 🤔

Para saber mais:

Continue explorando e aprofundando seus conhecimentos!

Bom dia Luis, Tudo bem ?

No caso, as teclas que geram o evento KeyPress são todas as que possuem um código ASCII correspondente, certo?

Letras Pontuações Números Espaço Delete

E as demais teclas não geram KeyPress, correto?

Bom dia,

Um evento KeyPress pode ocorrer quando qualquer uma das seguintes chaves é pressionada:

  • Qualquer caractere de teclado imprimível
  • CTRL combinado com um caractere do alfabeto padrão
  • CTRL combinado com qualquer caractere especial
  • BACKSPACE
  • ESC

Um evento KeyPress não ocorre sob as seguintes condições:

  • Pressionando TAB.
  • Pressionando ENTER.
  • Pressionando uma tecla de seta.
  • Quando um pressionamento de tecla faz o foco mover de um controle para outro.

Observação O BACKSPACE faz parte do conjunto de caracteres ANSI, mas DELETE não é. Excluir um caractere em um controle usando o BACKSPACE causa um evento KeyPress; excluir um caractere usando DELETE não.