WPF错误的KeyDown ASCII代码

Mic*_* IV 3 c# wpf

我需要根据ASCII表获取键盘键的数值.由于WPF没有内置解决方案,我尝试了几种黑客攻击:

1.这其中只给出大写值.

        char res ;
        Char.TryParse(e.Key.ToString(),out res);
        Debug.WriteLine((int)res);
Run Code Online (Sandbox Code Playgroud)

2即使它在许多地方被列为可能的解决方案,但这个数字完全错误.

        Debug.WriteLine(Convert.ToInt16(e.Key).ToString());
Run Code Online (Sandbox Code Playgroud)

那么如何从WPF中的输入中获取大写和小写字母ASCII代码?

更新

在这里得到几个答案后,我想强调一下我的问题.我绝对必须从输入中得到ASCII代码,无论是大写还是大写.没有硬编码字符比较或类似的东西.我正在寻找更通用的方法.

ken*_*nny 5

看看KeyEventUtility.GetCharFromKey(e.Key)

更新:抱歉这是我的一些库代码

    public static class KeyEventUtility
{
    // ReSharper disable InconsistentNaming
    public enum MapType : uint
    {
        MAPVK_VK_TO_VSC = 0x0,
        MAPVK_VSC_TO_VK = 0x1,
        MAPVK_VK_TO_CHAR = 0x2,
        MAPVK_VSC_TO_VK_EX = 0x3,
    }
    // ReSharper restore InconsistentNaming

    [DllImport( "user32.dll" )]
    public static extern int ToUnicode(
        uint wVirtKey,
        uint wScanCode,
        byte[] lpKeyState,
        [Out, MarshalAs( UnmanagedType.LPWStr, SizeParamIndex = 4 )] 
       StringBuilder pwszBuff,
    int cchBuff,
    uint wFlags );

[DllImport( "user32.dll" )]
public static extern bool GetKeyboardState( byte[] lpKeyState );

[DllImport( "user32.dll" )]
public static extern uint MapVirtualKey( uint uCode, MapType uMapType );

public static char GetCharFromKey( Key key )
    {
        char ch = ' ';

        int virtualKey = KeyInterop.VirtualKeyFromKey( key );
        var keyboardState = new byte[256];
        GetKeyboardState( keyboardState );

        uint scanCode = MapVirtualKey( (uint)virtualKey, MapType.MAPVK_VK_TO_VSC );
        var stringBuilder = new StringBuilder( 2 );

        int result = ToUnicode( (uint)virtualKey, scanCode, keyboardState, stringBuilder, stringBuilder.Capacity, 0 );
        switch ( result )
        {
        case -1:
            break;
        case 0:
            break;
        case 1:
            {
                ch = stringBuilder[0];
                break;
            }
        default:
            {
                ch = stringBuilder[0];
                break;
            }
        }
        return ch;
    }
Run Code Online (Sandbox Code Playgroud)