2010-03-25 152 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); 
     } 
    } 
}