2008-10-29 19 views

cevap

6

:

ChrW(70) 

C# size yayınlayabileceğim:

(char) 70 
2
Convert.ToChar(65) 
+3

. 'A' capitol için işe yarayabilir, ancak, örneğin, başarısız olur. tuş kombinasyonları ve numpaddeki numaralar için. Olası bir çözüm, Windows Forms'daki 'KeyPress' olayını veya WPF/Silverlight'taki 'TextInput' olayını dinlemektir. –

+1

'Convert.ToChar (190)' (OEMPeriod) kullanımı bana ¾¾ ve '' '' ı beklemiyormuş gibi verdi. – MCattle

-3

String.fromCharCode (event.keyCode)

+5

Bu, şuna bakarak herkes için .NET değil, Javascript'tir. – x4000

0

Convert.ToChar (Keys. Girmek);

+0

keys.numpad9 = "i", sanırım eşleşen bir karaktere dönüşmek istiyordu. – dwidel

0

DaveH'e cevap veremiyorum, ama diyorsa, iyi çalışıyor! Bu insanlar boş değer göndermek için çalışıyorum sahip iyi bir çözüm olduğu tespit

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 

:

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 
+1

Ve kodlarınızda WinAPI aramanın kullanımı nedir ?! –

1

Ben anahtar girmek gelen bir tuş saptanmasında oldukça yardımcı olmak için bu parçacık bulundu Metin kutusu. Bu sadece bir 0 zorlar, ancak çalıştırmak için "Enter tuşuna basıldığında" kullanır.

5

Bunu user32.dll'den bir kütüphane sınıfı kullanarak çözdüm. Bir Framework sınıfını tercih ederim ama bulamadım, bu yüzden bu benim için çalıştı.

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 
+2

ToAscii anahtar işlevdir +1. Ancak, MSDN'deki ifadelere bakın: * ToAscii işlevine sağlanan parametreler, sanal anahtar kodunu çevirmek için yeterli olmayabilir, çünkü önceki bir ölü anahtar, klavye düzeninde saklanır. * Http://msdn.microsoft.com /en-us/library/windows/desktop/ms646316(v=vs.85).aspx --- Ayrıca, bunun yerine ToUnicode kullanmayı düşünün. – peterchen

2

bu deneyin: İşte

Char.ConvertFromUtf32(e.KeyValue) 
+0

Bu yöntem, Shift durumunu dikkate almaz. Örneğin, keycode/value 65, "A" değerini döndürür, ancak basılan anahtar, Shift olmaksızın "a" idi. – Christoph

-1

bir örnek benim tarafımdan :) Bu (diğer tüm cevaplar gibi şimdiye kadar) doğru değil

#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 
+0

Bu cevapta char dönüşümü için anahtar kodu yoktur. – Christoph

İlgili konular