2009-10-13 4 views
6

ceci dans une application C# .net:.Net KeyEventArgs retour vs entrer

string key = e.KeyCode.ToString();

en .net 1.1 key = "entrer"

en .net 3.5 key = "return"

ma question est pourquoi sont-ils différents?

+1

Est-ce que les deux applications ont la même CultureInfo? –

+0

Oui - la même application exacte est compilé avec vs2003 .net 1.1 et l'autre avec vs2008 .net 3.5 – dnndeveloper

Répondre

12

L'enum Keys a des valeurs identiques pour Enter et Return (il a également un certain nombre d'autres doublons). Le cadre a choisi une valeur différente dans ToString.

+0

c'est tout, vérifié ici: http://msdn.microsoft.com/fr-fr/library/system. windows.forms.keys (VS.71) .aspx si quelqu'un a une feuille de triche qui serait génial. – dnndeveloper

+1

Une feuille de triche pour quoi? – SLaks

+0

montrant quelles valeurs sont les mêmes, telles que les touches Entrée et Retour dans les touches enum. vous avez mentionné qu'il y a d'autres doublons. – dnndeveloper

8

Voici tous les noms en double: Cela a été généré par la requête suivante dans LINQPad:

Enum.GetNames(typeof(Keys)) 
    .GroupBy(k => Enum.Parse(typeof(Keys), k)) 
    .Where(g => g.Count() > 1) 
    .Select(g => String.Join(", ", g.Select(k => k.ToString()).ToArray())) 

Enter, Return 
CapsLock, Capital 
HangulMode, HanguelMode, KanaMode 
KanjiMode, HanjaMode 
IMEAccept, IMEAceept 
Prior, PageUp 
PageDown, Next 
Snapshot, PrintScreen 
OemSemicolon, Oem1 
Oem2, OemQuestion 
Oem3, Oemtilde 
Oem4, OemOpenBrackets 
OemPipe, Oem5 
OemCloseBrackets, Oem6 
OemQuotes, Oem7 
Oem102, OemBackslash 
Questions connexes