I have a form, myForm, which has KeyPreview set to true.
The idea is that I want to capture CTRL-Enter and fire the submit button of the form, no matter what textbox (or other control) that may have focus.
So I set up this method:
private void myForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Enter)
{
btnCommit_Click(sender, new EventArgs());
}
}
Which does exactly what it says. The problem is, the enter key stroke is also fired in the textbox that had focus, so the textbox now has a line break right in the middle of a word or wherever the cursor was. According to the MSDN docs:
When this property is set to true, the form will receive all KeyPress, KeyDown, and KeyUp events. After the form's event handlers have completed processing the keystroke, the keystroke is then assigned to the control with focus.
This is unfortunatly NOT TRUE, I have verified by stepping through the code that the textbox does indeed show the new line break BEFORE the myForm_KeyUp code gets fired.
I have tried adding both
e.Handled = true;
and
e.SuppressKeyPress = true;
To no effect, as the textbox already shows the linebreak.
Any ideas? Am I missing something?