title: What is the difference between the KeyCode and KeyData properties on the .NET WinForms key event argument objects?
body: <p>The two key event argument classes <code>KeyEventArgs</code> and <code>PreviewKeyDownEventArgs</code> each have two properties, <code>KeyCode</code> and <code>KeyData</code>, which are both of the enumeration type Keys.</p>
  
  <p>What is the difference between these two properties? Do the values in them ever differ from each other?  If so, when and why?</p>