2010-03-25 4 views
0

J'essaye de remapper l'entrée d'une zone de texte. Par exemple. Si un utilisateur entre un N alors je voudrais le changer en 9. Je pensais qu'il serait mieux d'essayer de l'attraper dans l'événement PreviewKeyDown bien que je doive aussi traiter les tentatives de collage (je peux résoudre ce problème je pense) .WPF Keyboard Remapping

PreviewKeyDown est-il un bon point de départ? Si oui, comment envoyer la clé de remplacement. Je sais que e.Handled = true arrêtera la clé d'origine en cours de traitement.

Merci.

Répondre

0

Je voudrais sous-classer la zone de texte et ajouter le comportement souhaité. (Un comportement joint est une autre option, mais j'aime mieux la classe dérivée.)

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