Debes tener en cuenta que contas con tres mètodos relacionados con la pulsación de teclas:
OnKeyDown
OnKeyPress
OnKeyUp
OnKeyDown se ejecuta cuando el usuario pulsa una tecla (practicamente cualquiera de teclado, con excepción de las teclas alt, shift ctrl y la de windows creo yo).
OnKeyUp se lanza cuando el usuario suelta la tecla.
Estos eventos son muy útiles para programar juegos, por ejemplo, y además traen un conjunto llamado ShiftState donde podes ver si el usuario tiene presionado shift, alt o ctrl (o cualquier combinación de ellas).
No recuerdo exactamente si OnKeyPress se ejecuta en medio de estos otros dos o luego de OnKeyUp, pero lo hará solamente con las teclas que tienen un código ascii asociado.
Hasta luego.