Je voudrais changer tous les caractères entrés dans une zone de texte en majuscule. Le code ajoutera le caractère, mais comment puis-je déplacer le caret sur la droite?
private void textBox3_KeyPress(object sender, KeyPressEventArgs e) { textBox3.Text += e.KeyChar.ToString().ToUpper(); e.Handled = true; }
6 Réponses :
Définit le Notez que Si vous voulez toujours vraiment faire cela en code, quelque chose comme ça devrait fonctionner: < / p> caractérisation Code>
Propriété de la boîte à texte code> à supérieure code>; Ensuite, vous n'avez pas besoin de le traiter manuellement.
textbox3.text + = e.keychar.tostring (). Toupper (); code> ajoutera le nouveau caractère à la fin de la string même si le caret d'entrée est au milieu de la chaîne em> (dont la plupart des utilisateurs trouveront très déroutant). Pour la même raison, nous ne pouvons pas supposer que le cachet d'entrée doit apparaître à la fin de la chaîne après avoir saisi le caractère. P>
+1: J'ai fourni une réponse alternative car elle peut être utile dans d'autres situations.
Cela préservera l'emplacement du point d'insertion (mais je vais d'aller avec la réponse donnée par Fredrik Mörk) SelectionStart pourrait effectivement être appelé Selstart, je n'ai pas T avoir un compilateur pratique pour le moment. p> p>
Si vous devez le faire manuellement, vous pouvez utiliser
private void textBox3_KeyPress(object sender, KeyPressEventArgs e) { int selStart = textBox3.SelectionStart; textBox3.Text = textBox3.Text.Insert(selStart,e.KeyChar.ToString().ToUpper()); textBox3.SelectionStart = selStart + 1; e.Handled = true; }
Une autre méthode consiste simplement à modifier la valeur du keychar lui-même:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((int)e.KeyChar >= 97 && (int)e.KeyChar <= 122) { e.KeyChar = (char)((int)e.KeyChar & 0xDF); } }
tbNumber.SelectionStart = tbNumber.Text.ToCharArray().Length; tbNumber.SelectionLength = 0;
C'est un excellent moyen d'ajouter du texte avant les types d'utilisateurs.
private void txtID_TextChanged(object sender, EventArgs e) { txtID.Text = txtID.Text.ToUpper(); txtID.SelectionStart = txtID.Text.Length; }
Quel cadre GUI utilisez-vous? Est-ce que ces formulaires de victoire? WPF? Silverlight?
@ Monkey_boys-j'espère que mes changements ont laissé votre sens intact.
Notez que
textbox3.text + = e.keychar.tostring (). Toupper () code> Ajoutez toujours le nouveau caractère du dernier dans la zone de texte, même si le calet est au milieu du texte.
@John Macintyre- Je pense qu'il voulait dire qu'il souhaitait que le curseur soit au bon côté du caractère nouvellement inséré.