识别KeyEventHandler中的西里尔字符或德语字符

时间:2014-05-12 17:23:42

标签: c# wpf

KeyEventHandler可以捕获正确的外键盘字符吗?

我需要查看句子在输入时是否包含某些字符,如果用户选择了系统键盘,则应识别德语变音字符,西里尔字母和其他字符。

this.PreviewKeyDown += new KeyEventHandler(OnButtonKeyDown);

private void OnButtonKeyDown(object sender, KeyEventArgs e)
{
   Sentence.Contains(e.Key.ToString());

例如,输入ö会获得“Oem3”,无论选择哪个键盘,该键都与该按钮相同。

我不能在这里使用TextBox,因此首选KeyEventHandler。

1 个答案:

答案 0 :(得分:1)

我不知道用KeyEventArgs做任何事情。但您也可以使用PreviewTextInput事件代替PreviewKeyDown事件。例如。像这样:

this.PreviewTextInput += OnButtonPreviewTextInput;

...

void OnButtonPreviewTextInput(object sender, TextCompositionEventArgs e)
{
    if ("äöüÄÖÜß".Contains(e.Text))
    {
        Debug.WriteLine("German text entered");
    }
    else if (e.Text.Any(c=>0x0400 <= c && c <= 0x4FF))
    {
        Debug.WriteLine("Cyrillic text entered");
    }
}