将KeyEventArgs转换为清晰的文本

时间:2015-09-29 18:11:32

标签: c# wpf

我在WPF应用程序中捕获按键并获取带有KeyEventArgs参数的事件。

考虑到特殊键并且按下大写锁定或班次,将该事件转换为易读文本的最佳方法是什么?

我的意思的一些例子。

  • Enter 打印:{Enter}
  • Shift + a 打印:A
  • Shift + 1 打印:!(或用户的键盘布局有)
  • Alt + 2 打印:@(或者用户的键盘布局有)

到目前为止,我有这个,它不适用于大写或小写,并打破一堆特殊键。

void KeyDownEvent(object sender, KeyEventArgs e)
{
    var k = e.KeyCode.ToString();
    bool isLetterOrDigit = char.IsLetterOrDigit((char)e.KeyCode);
    if (isLetterOrDigit)
    {
        if (e.Shift)
            k.ToUpper();
        else
            k.ToLower();
    }
    else
    {
        k = "{" + k + "}";
    }
    AddKeyChar(k);
}

我认为这将是一个简单的问题,事实证明它可能不是。 ;)

修改1

输入以下文字:Test With Text and special chars!@ 目前转换为:

  

{LShiftKey} {LShiftKey} {LShiftKey} TEST {空间} {LShiftKey} WITH {空间} {LShiftKey} TEXT {空间} AND {空间} SPECIAL {空间}煤焦{LShiftKey} D1 {LControlKey} {RMenu} D2

0 个答案:

没有答案