WPF键盘重映射

时间:2010-03-25 15:54:45

标签: c# wpf

我正在尝试重新映射文​​本框的输入。例如。如果用户输入N然后我想将其更改为9.我认为最好尝试在PreviewKeyDown事件中捕获它,尽管我还需要处理粘贴尝试(我可以解决这个问题)

PreviewKeyDown是一个很好的起点吗?如果是,我该如何发送替换密钥。我知道e.Handled = true会停止正在处理的原始密钥。

感谢。

1 个答案:

答案 0 :(得分:0)

我会将文本框子类化并添加所需的行为。 (附加行为是另一种选择,但我更喜欢派生类。)

public class MyTextBox : TextBox
{
    protected override void OnPreviewKeyDown(KeyEventArgs e)
    {
        if (e.Key == Key.N)
        {
            e.Handled = true;
            Text += '9';

            // Setting Text annoyingly puts SelectionStart at 0
            this.SelectionStart = Text.Length;
        }
        else
        {
            base.OnPreviewKeyDown(e);
        }
    }
}