2010-03-25 149 views
0

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

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

谢谢。

回答

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); 
     } 
    } 
}