KeyEventArgs.Handled vs KeyEventArgs.SupressKeyPress

It simply prevents user input for all pending button hits. i.e. in a TextBox, not only event Handled is set to true, user input is suppressed and not reflected on the text box in case you're typing very fast and hit many buttons at once.


According to this blog: New keyboard APIs: KeyEventArgs.SuppressKeyPress:

The problem is that "Handled" doesn't take care of pending WM_CHAR messages already built up in the message queue - so setting Handled = true does not prevent a KeyPress from occurring.

In order not to break anyone who has currently got e.Handled = true, we needed to add a new property called SuppressKeyChar. If we went the other way, if "handling" a keydown suddenly started to actually work, we might break folks who accidentally had this set to true.