¿Cómo convierto un código clave en un keychar en .NET?Convertir código clave a clave char
Respuesta
En VB.NET:
ChrW(70)
En C# se puede lanzar:
(char) 70
Convert.ToChar(65)
String.fromCharCode (event.keyCode)
Esto es Javascript, no .NET, para cualquiera que mire esto. – x4000
Convert.ToChar (Keys. Entrar);
keys.numpad9 = "i", creo que estaba buscando convertir a un personaje coincidente. – dwidel
Parece que no puedo responder a DaveH, pero si haces lo que él dice, ¡funciona bien!
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
¿Y cuál es el uso de llamar a WinAPI en sus códigos? –
me encontré con este fragmento a ser bastante útil en la detección de una pulsación de tecla de la tecla 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
he encontrado que esto es una solución decente a que la gente tratando de presentar un valor nulo en una caja de texto. Esto simplemente fuerza a 0, pero usa la "detección de entrar presionada" para ejecutar.
Lo resolví utilizando una clase de biblioteca de user32.dll. Preferiría una clase Framework, pero no pude encontrar una, así que esto funcionó para mí.
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 es la función clave, +1. Sin embargo, consulte los comentarios en MSDN: * Los parámetros suministrados a la función ToAscii pueden no ser suficientes para traducir el código de la tecla virtual, porque una clave muerta anterior se almacena en el diseño del teclado. * Http://msdn.microsoft.com /en-us/library/windows/desktop/ms646316(v=vs.85).aspx --- Además, considere usar ToUnicode en su lugar. – peterchen
Prueba esto:
Char.ConvertFromUtf32(e.KeyValue)
Este método no tiene en cuenta el estado Shift. Por ejemplo, keycode/value 65 devuelve 'A', pero la tecla que se presionó fue 'a' sin Shift. – Christoph
Aquí un ejemplo de mi lado :)
#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
No hay una conversión de código clave a char en esta respuesta. – Christoph
- 1. Convertir una clave System.Windows.Input.KeyEventArgs a un char
- 2. Cómo convertir un carácter a código clave?
- 3. C# ¿Cómo traducir el código clave virtual a char?
- 4. código de clave de Javascript =/= código de char
- 5. Xkb: Cómo convertir un código clave a keysym
- 6. Convertir clave privada tradicional PEM a clave privada PKCS8
- 7. Obtener Char de la clave
- 8. ¿Cómo convertir un carácter a su código clave?
- 9. Convertir código de clave virtual a cadena Unicode
- 10. ¿Cómo puedo convertir un código de clave en un char o cadena?
- 11. Usando char * como clave en std :: map
- 12. Convertir clave pública RSA a RSA DER
- 13. Convertir código de llave en cadena equivalente clave
- 14. código clave y charCode
- 15. Convertir char a NSString
- 16. Convertir float a char *
- 17. Convertir cadena a char
- 18. C++ convertir char a const char *
- 19. ¿Quieres convertir CharCode a Char?
- 20. Clave primaria compuesta, clave externa. ¿Referencia a objeto o clave?
- 21. Cómo convertir char * a BSTR?
- 22. Cómo convertir códigos de clave virtual a System.Windows.Forms.Keys
- 23. C Convertir char en char *
- 24. Convertir un char a mayúscula
- 25. Convertir single-char a int
- 26. Convertir entradas en clave, pares de valores
- 27. Convertir DataTable a JSON con clave por fila
- 28. Convertir ssh clave generada en mac a ppk
- 29. ¿Es posible convertir char [] a char * en C?
- 30. Cómo convertir un código de clave virtual nativo de Windows a Qt :: Key?
Esto no es correcto (como todas las otras respuestas hasta el momento). Puede funcionar para la capital 'A', pero falla, p. para combinaciones de teclas y para los números en el teclado numérico. Una posible solución es escuchar el evento 'KeyPress' en Windows Forms o en el evento' TextInput' en WPF/Silverlight. –
El uso de 'Convert.ToChar (190)' (OEMPeriod) me dio '¾' y no' .' como esperaba. – MCattle