A KeyPressEventArgs specifies the character that is composed when the user presses a key. For example, when the user presses SHIFT + K, the KeyChar property returns an uppercase K.
A KeyPress event occurs when the user presses a key. Two events that are closely related to the KeyPress event are KeyUp and KeyDown. The KeyDown event precedes each KeyPress event when the user presses a key, and a KeyUp event occurs when the user releases a key. When the user holds down a key, duplicate KeyDown and KeyPress events occur each time the character repeats. One KeyUp event is generated upon release.
With each KeyPress event, a KeyPressEventArgs is passed. A KeyEventArgs is passed with each KeyDown and KeyUp event. A KeyEventArgs specifies whether any modifier keys (CTRL, SHIFT, or ALT) were pressed along with another key. (This modifier information can also be obtained through the ModifierKeys property of the Control class.)
Set Handled to true to cancel the KeyPress event. This keeps the control from processing the key press."
However also note -
"Some controls will process certain key strokes on KeyDown. For example, RichTextBox processes the Enter key before KeyPress is called. In such cases, you cannot cancel the KeyPress event, and must cancel the key stroke from KeyDown instead."
The documentation is clear that KeyDown fires before KeyPress and you can show that it does by coding something like this:
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) _
Handles TextBox1.KeyDown
Debug.Print("Down")
MessageBox.Show("Down")
e.Handled = True
End Sub
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) _
Handles TextBox1.KeyPress
Debug.Print("Press")
MessageBox.Show("Press")
End Sub
Running this you will see that Debug writes "Down" before "Press". You can also but breakpoints in the two handlers and see that KeyDown fires before KeyPress.
You will also see that the "Press" MessageBox shows before the "Down" MessageBox. That is curious and I would be interested if someone could explain it.
Reference: KeyPress Event firing before KeyDown Event on textbox.