如何将System.Windows.Input.Key转换为数字?

时间:2012-09-06 20:49:38

标签: c# keyboard converter

我正在使用事件PreviewKeyDown,并在密钥列表中添加密钥,如下例所示:

    List<Key> keys = new List<Key>();
    private void MDIChildBackground_PreviewKeyDown(object sender, KeyEventArgs e)
    {        

        keys.Add(e.Key);
    }

然后我想从列表中取出键并转换为整数。

示例:

    int number=int.parse(keys[0].ToString());

ps:只会输入数字

但问题是转换为字符串 因为当我在键盘中键入一个(1)并转换为字符串 字符串值为“D1”而不是“1”。 很快,如果我尝试将此字符串转换为整数,它将给出异常。

现在,我该如何处理?

2 个答案:

答案 0 :(得分:2)

您可以使用KeyInterop.VirtualKeyFromKey方法将WPF密钥转换为Win32虚拟密钥。它将返回按下的键的整数值。

例如,如果你点击 T 键,它将返回84.

答案 1 :(得分:0)

如果您确定自己只处理数字键,那么以下内容应该有效(我不熟悉Windows.Input - 那是WPF的东西吗?);

int Number = -1;

if( keys[0] >= Key.D0 && keys[0] <= Key.D9 )
   Number = keys[0] - Key.D0;

重复列表中的其他键。