Как преобразовать код ключа в keychar в .NET?
Преобразовать ключевой код в ключ char
Ответ 1
В VB.NET:
ChrW(70)
В С# вы можете использовать:
(char) 70
Ответ 2
Я решил это, используя класс библиотеки из user32.dll. Я бы предпочел класс Framework, но не смог найти его, чтобы это сработало для меня.
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
Ответ 3
Convert.ToChar(65)
Ответ 4
Попробуйте следующее:
Char.ConvertFromUtf32(e.KeyValue)
Ответ 5
Я нашел этот фрагмент весьма полезным при обнаружении нажатия клавиши ввода:
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
Я нашел, что это достойное решение для того, чтобы люди пытались отправить нулевое значение в текстовое поле. Это просто заставляет 0, но он использует кнопку "enter enter enter" для запуска.
Ответ 6
Convert.ToChar(Keys.Enter);
Ответ 7
Я не могу ответить DaveH, но если вы сделаете так, как он говорит, все будет хорошо!
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
Ответ 8
Вот пример с моей стороны:)
#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
Ответ 9
String.fromCharCode(event.keyCode)