2010-03-25 4 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); 
     } 
    } 
} 
관련 문제