2010-09-14 4 views

Répondre

4

Je pense que vous devriez gérer l'événement KeyPress. Vérifiez si la touche enfoncée est G, si oui, rejetez l'entrée et mettez A dans la zone de texte. Essayez ceci (Le caractère sera ajouté au texte existant:

private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 
    { 
     if (e.KeyChar == 'G') 
     { 
      // Stop the character from being entered into the control 
      e.Handled = true; 
      textBox1.Text += 'A'; 
     } 
    } 
+3

au lieu de 'textBox1.Text + = 'A',' 'je préférerais textBox1.AppendText (? "A"); ' – Oliver

+0

@Oliver Raison spécifique: –

+0

Performance: mettez 10 000 caractères dans votre textBox et laissez une minuterie ajouter un caractère aléatoire toutes les 100ms.Au premier test, utilisez l'approche' + = '. La solution 'AppendText()' Le problème est qu'une chaîne est immuable et donc toute la chaîne sortira de la zone de texte un seul char ajouté et toute cette chaîne sera renvoyée à la TextBox. tout son contenu et prendre le nouveau, conduisant à vilain scintillement. – Oliver

15
TextBox t = new TextBox(); 
    t.KeyPress += new KeyPressEventHandler(t_KeyPress); 


    void t_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == 'G') 
      e.KeyChar = 'A'; 
    } 
+0

C'est plus élégant :) - +1 –

Questions connexes