Catch a key stroke before the actual control

This example shows how to catch a key stroke before it is forwarded to the actual control.
This can be useful if you want to perform your own actions, before the actual control gets them.

// KeyDown event of some control
private void SomeControl_KeyDown(object sender, KeyEventArgs e)
    // 1. Event is called directly after the key stroke
    // If the user hits Enter, we catch the
    // event and do our own things
    if (e.KeyCode == Keys.Enter)
        // Suppress key stroke, so that
        // the control don't receives it
        e.SuppressKeyPress = true;
        // Perform something important...
// KeyPress event of some control
private void SomeControl_KeyPress(object sender, KeyPressEventArgs e)
    // 2. Event is called during the key stroke
// KeyUp event of some control
private void SomeControl_KeyUp(object sender, KeyEventArgs e)
    // 3. Event is called after the key stroke  
Snippet Details

Sorry folks, comments have been deactivated for now due to the large amount of spam.

Please try to post your questions or problems on a related programming board, a suitable mailing list, a programming chat-room,
or use a QA website like stackoverflow because I'm usually too busy to answer any mails related
to my code snippets. Therefore please just mail me if you found a serious bug... Thank you!

Older comments: