Jak przekonwertować kod klucza na keychar w .NET?Konwersja kodu klucza na kod klucza
Odpowiedz
W VB.NET:
ChrW(70)
W języku C# można oddać:
(char) 70
Convert.ToChar(65)
String.fromCharCode (event.keyCode)
To jest JavaScript, nie .NET, dla każdego, kto na to patrzy. – x4000
Convert.ToChar (klawisze. Wchodzić);
keys.numpad9 = "i", myślę, że chciał przekształcić się w pasującą postać. – dwidel
Nie mogę odpowiedzieć DaveH, ale jeśli robisz tak, jak on mówi, to działa dobrze!
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public sub harry()
For i = 1 to 255
If Chr(i) = Convert.ToChar(Keys.Enter) Then
Label1.Text &= " [Enter] "
ElseIf Chr(i) = Convert.ToChar(Keys.Delete) Then
Label1.Text &= " [Delete] "
End If
Next i
End Sub
A jaki jest pożytek z połączenia z WinAPI w Twoich kodach ?! –
Znalazłem ten fragment będzie raczej pomocny w wykrywaniu naciśnięcie klawisza z klawisz Enter:
Private Sub StartValue_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles StartValue.KeyPress
If ChrW(13).ToString = e.KeyChar And StartValue.Text = "" Then
StartValue.Text = "0"
End If
End Sub
Uważam, że jest to przyzwoite rozwiązanie posiadające ludzie próbują złożyć zerową wartość w pole tekstowe. To po prostu wymusza 0, ale używa "wykrytego wejścia naciśniętego", aby uruchomić.
Rozwiązałem to przy użyciu klasy biblioteki z pliku user32.dll. Wolałbym klasy Framework, ale nie mogłem go znaleźć, więc to działało dla mnie.
Imports System.Runtime.InteropServices
Public Class KeyCodeToAscii
<DllImport("User32.dll")> _
Public Shared Function ToAscii(ByVal uVirtKey As Integer, _
ByVal uScanCode As Integer, _
ByVal lpbKeyState As Byte(), _
ByVal lpChar As Byte(), _
ByVal uFlags As Integer) _
As Integer
End Function
<DllImport("User32.dll")> _
Public Shared Function GetKeyboardState(ByVal pbKeyState As Byte()) _
As Integer
End Function
Public Shared Function GetAsciiCharacter(ByVal uVirtKey As Integer) _
As Char
Dim lpKeyState As Byte() = New Byte(255) {}
GetKeyboardState(lpKeyState)
Dim lpChar As Byte() = New Byte(1) {}
If ToAscii(uVirtKey, 0, lpKeyState, lpChar, 0) = 1 Then
Return Convert.ToChar((lpChar(0)))
Else
Return New Char()
End If
End Function
End Class
ToAscii jest kluczową funkcją +1. Jednak zobacz uwagi w MSDN: * Parametry dostarczone do funkcji ToAscii mogą nie być wystarczające do przetłumaczenia kodu klucza wirtualnego, ponieważ poprzedni martwy klucz jest przechowywany w układzie klawiatury. * Http://msdn.microsoft.com /pl-pl/library/windows/desktop/ms646316(v=vs.85).aspx --- Należy również rozważyć użycie ToUnicode. – peterchen
Spróbuj tego:
Char.ConvertFromUtf32(e.KeyValue)
Ta metoda nie uwzględnia statusu przesunięcia. Na przykład kod/wartość 65 zwraca "A", ale naciśnięty klawisz to "a" bez Shift. – Christoph
tutaj przykład z mojej strony :)
#region Just for fun :D
private string _lastKeys = "";
private readonly Dictionary<string, string[]> _keyChecker = _
new Dictionary<string, string[]>
{
// Key code to press, msgbox header, msgbox text
{"iddqd", new[] {"Cheater! :-)", "Godmode activated!"}},
{"idkfa", new[] {"Cheater! :-)", "All Weapons unlocked!"}},
{"aAa", new[] {"Testing", "Test!"}},
{"aaa", new[] {"function", "close"}}
};
private void KeyChecker(KeyPressEventArgs e)
{
_lastKeys += e.KeyChar;
foreach (var key in _keyChecker.Keys)
if (_lastKeys.EndsWith(key))
if (_keyChecker[key][0] != "function")
MessageBox.Show(_keyChecker[key][1], _keyChecker[key][0]);
else
KeyCheckerFunction(_keyChecker[key][1]);
while (_lastKeys.Length > 100)
_lastKeys = _lastKeys.Substring(1);
}
private void KeyCheckerFunction(string func)
{
switch (func)
{
case "close":
Close();
break;
}
}
private void FormMain_KeyPress(object sender, KeyPressEventArgs e)
{
KeyChecker(e);
}
#endregion Just for fun :D
W tej odpowiedzi nie ma kodu klucza do konwersji znaków. – Christoph
- 1. Wymiana klucza kodu CKEditor 4
- 2. Xkb: Jak przekonwertować kod klucza na keysym
- 3. Map NSEvent keyCode na kod klucza wirtualnego
- 4. MAS: Identyfikator klucza podpisywania kodu
- 5. Tworzenie zasobu XAML z kodu bez klucza
- 6. Konwersja klucza ssh generowanego na komputerze Mac do ppk
- 7. JavaScript Sortowanie obiektu wartości klucza klucza na podstawie wartości
- 8. Przykładowy kod do szyfrowania/odszyfrowywania klucza publicznego na komputerze Mac?
- 9. Konwertuj kod wirtualnego klucza na ciąg znaków Unicode
- 10. Użyj klucza podstawowego złożonego jako klucza obcego
- 11. Czy mogę użyć klucza ogólnego jako klucza?
- 12. Wartości pola klucza obcego phpMyAdmin obcego klucza
- 13. Zmiany klucza AntiForgeryToken na żądanie
- 14. Konwersja właściwości i wartości obiektu do tablicy par wartości klucza
- 15. Kodowanie wartości klucza iOS
- 16. Najpierw kod EF - niestandardowa nazwa ograniczenia klucza obcego
- 17. java.security.InvalidKeyException: Niedozwolony rozmiar klucza
- 18. modyfikując wartość klucza rejestru
- 19. Jak ustawić rozmiar klucza dla RSAProtectedConfigurationProvider z kodu
- 20. Python: Konwersja wielu instancji tego samego klucza do wielu wierszy
- 21. fsolve na pytona (konwersja matlab kod do kodu Pythona)
- 22. Uzyskaj kod scancode zamiast kodu klucza w systemie Linux przy użyciu X11
- 23. Problem z formatem klucza Gitlab
- 24. Python: powiązać funkcję klucza
- 25. słownik nie rozpoznaje klucza typ
- 26. Przechowywanie danych klucza klucza Boltdb wyłącznie w Go
- 27. Git Heroku Odmowa uprawnień klucza publicznego (po dodaniu klucza publicznego)
- 28. Jak utworzyć hash klucza Facebook?
- 29. keypress i keyup - dlaczego kod klucza jest inny?
- 30. Testowanie ważności klucza redis
To nie jest poprawne (jak wszystkie inne odpowiedzi do tej pory). Może działać dla kapitolu "A", ale zawiedzie np. dla kombinacji klawiszy i liczb na klawiaturze numerycznej. Możliwym rozwiązaniem jest słuchanie zdarzenia 'KeyPress' w Windows Forms lub zdarzenia' TextInput' w WPF/Silverlight. –
Użycie 'Convert.ToChar (190)' (OEMPeriod) dało mi '¾', a nie' .' jak się spodziewałem. – MCattle