2010-09-26 8 views
0

J'ai un textbox, rien de surprenant là-bas. Lorsque le texte est modifié, j'appelle l'événement change et place tout dans cette zone de texte en majuscules en utilisant .upper(). Cependant, la zone de texte place toujours le curseur au début de la zone de texte. Donc par exemple disons que vous tapez dans abc il apparaîtra dans la boîte comme CBA car le curseur semble toujours rester, sauf si vous utilisez les touches fléchées au début de la zone de texte, pourquoi est-ce et comment le corriger?textbox mettant toujours le curseur au début du texte

collector_initials.Text = collector_initials.Text.ToUppper(); 

Merci r.

Répondre

1

Réglage de la propriété Text remet à zéro les propriétés TextBox.SelectionStart et SelectionLength. Changer le point d'insertion dans le processus. Il y a une meilleure souricière disponible ici, implémentez l'événement KeyPress pour pouvoir modifier la touche enfoncée. Comme ceci:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { 
     e.KeyChar = char.ToUpper(e.KeyChar); 
    } 
+0

Merci, c'était exactement la réponse que je cherchais :) – flavour404

0

Enregistrer l'indice actuel avant de changer le texte:

int savedIndex = textbox.SelectionStart; 

Set nouveau après avoir changé le texte:

// you will have to decide what to do if your index is larger than the text length 
textbox.SelectionStart = Math.Min(savedIndex, textbox.Text.Length); 
textbox.SelectionLength = 0;