2009-10-13 13 views
6

mieć to w aplikacji C# .NET: Klucz.Net KeyEventArgs powrócić vs wprowadzić

ciąg = e.KeyCode.ToString();

w .net 1.1 key = "enter"

w .NET 3.5 key = "powrót"

moje pytanie jest dlaczego są one różne?

+1

Czy obie aplikacje mają taką samą CultureInfo? –

+0

Tak - dokładnie ta sama aplikacja tylko jedna jest skompilowana z vs2003 .net 1.1, a druga z vs2008 .net 3.5 – dnndeveloper

Odpowiedz

12

Wyliczenie Keys ma identyczne wartości dla Enter i Return (ma również wiele innych duplikatów). Framework wybrał inną wartość w ToString.

+0

to jest, zweryfikowana tutaj: http://msdn.microsoft.com/en-us/library/system. windows.forms.keys (VS.71) .aspx , jeśli ktoś ma cheat sheet, który byłby świetny. – dnndeveloper

+1

Ślimak na co? – SLaks

+0

pokazuje, jakie wartości są takie same, jak klawisz Enter i Return w wyliczaniu kluczy. wspomniałeś, że są inne duplikaty. – dnndeveloper

8

Oto wszystkie zduplikowane nazwy: ten został wygenerowany za pomocą następującego zapytania w 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