Dans la documentation officielle de Microsoft, il n'y a qu'un seul paragraphe qui mentionne le comportement des contrôles au clavier (du moins ce que j'ai pu trouver) :
http://msdn.microsoft.com/en-us/library/cc189015(v=VS.95).aspx#inputting_text
Saisie de texte et contrôles
Certains contrôles réagissent aux événements clavier avec leur propre gestion. Par exemple, une TextBox est un contrôle conçu pour capturer et représenter visuellement le texte saisi au clavier. Elle utilise KeyUp et KeyDown dans sa propre logique pour capturer les frappes, puis déclenche son propre événement TextChanged si le texte a réellement changé. En règle générale, vous pouvez toujours ajouter des gestionnaires pour KeyUp et KeyDown à une TextBox ou à tout autre contrôle connexe destiné à traiter des entrées de texte. Cependant, dans le cadre de sa conception, un contrôle peut ne pas répondre à toutes les valeurs de touches qui lui sont adressées par le biais d'événements de touches. Le comportement est spécifique à chaque contrôle. Par exemple, ButtonBase (classe de base pour les boutons) traite KeyUp de manière à vérifier la présence de la touche SPACEBAR ou ENTER, qu'il considère comme équivalente à l'enfoncement du bouton gauche de la souris dans le but de déclencher un événement Click. Ce traitement de l'événement est réalisé par ButtonBase qui surcharge la méthode virtuelle OnKeyUp et qui, dans son implémentation, définit Handled = true. Il en résulte que tout parent d'un bouton à l'écoute d'un événement de touche dans le cas d'un SPACEBAR ne recevra pas l'événement déjà traité pour ses propres gestionnaires. Un autre exemple est celui de TextBox. Certaines touches, telles que les touches FLECHE, ne sont pas considérées comme du texte par TextBox, mais comme spécifiques au comportement de l'interface utilisateur du contrôle, et TextBox marque ces cas d'événements comme étant gérés.
Les contrôles personnalisés peuvent implémenter leur propre comportement similaire pour les événements de touches en surchargeant OnKeyDown / OnKeyUp. Si votre contrôle personnalisé traite des touches d'accélération spécifiques ou a un comportement de contrôle ou de focus similaire au scénario décrit pour TextBox, vous devez placer cette logique dans vos propres surcharges OnKeyDown / OnKeyUp.
Existe-t-il une référence plus complète ?
Par exemple, dans une boîte d'auto-complétion, vous pouvez naviguer parmi les suggestions en appuyant sur les touches haut/bas et en choisir une en appuyant sur la touche Entrée, etc.
Il doit certainement y avoir un meilleur moyen que de concentrer chaque commande et d'appuyer sur chaque touche du clavier pour le savoir :)