TextBox seulement en majuscule

Je veux que la TextBox ne soit qu'en majuscule. dans Windows Phone, il ne possède pas CharacterCasing , la seule solution à laquelle je puisse penser est:

private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
   textBox.Text = textBox.Text.ToUpper();
}

Le processus s’effectuera chaque fois que l’utilisateur appuiera sur une touche qui n’est pas bonne. Y a-t-il un meilleur moyen?

1

7 Réponses

Malheureusement, il n'y a pas de meilleur moyen que de suivre TextChanged . Cependant, votre implémentation est défectueuse car elle ne tient pas compte du fait que l'utilisateur peut changer la position du curseur.

Au lieu de cela, vous devriez utiliser ceci:

private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    TextBox currentContainer = ((TextBox)sender);
    int caretPosition = currentContainer.SelectionStart;

    currentContainer.Text = currentContainer.Text.ToUpper();
    currentContainer.SelectionStart = caretPosition++;
}
3
ajouté
ne fonctionne pas dans windows 10 mobile :( - chaque seconde lettre renvoie les géos à la position 0 + 1
ajouté l'auteur Jakub Wisniewski, source
merci Den .. édition de texte dans Windows Phone est vraiment une douleur!
ajouté l'auteur user3293835, source

Malheureusement, il n'y a pas de meilleur moyen que de suivre TextChanged . Cependant, votre implémentation est défectueuse car elle ne tient pas compte du fait que l'utilisateur peut changer la position du curseur.

Au lieu de cela, vous devriez utiliser ceci:

private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    TextBox currentContainer = ((TextBox)sender);
    int caretPosition = currentContainer.SelectionStart;

    currentContainer.Text = currentContainer.Text.ToUpper();
    currentContainer.SelectionStart = caretPosition++;
}
3
ajouté
ne fonctionne pas dans windows 10 mobile :( - chaque seconde lettre renvoie les géos à la position 0 + 1
ajouté l'auteur Jakub Wisniewski, source
merci Den .. édition de texte dans Windows Phone est vraiment une douleur!
ajouté l'auteur user3293835, source

Malheureusement, il n'y a pas de meilleur moyen que de suivre TextChanged . Cependant, votre implémentation est défectueuse car elle ne tient pas compte du fait que l'utilisateur peut changer la position du curseur.

Au lieu de cela, vous devriez utiliser ceci:

private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    TextBox currentContainer = ((TextBox)sender);
    int caretPosition = currentContainer.SelectionStart;

    currentContainer.Text = currentContainer.Text.ToUpper();
    currentContainer.SelectionStart = caretPosition++;
}
3
ajouté
ne fonctionne pas dans windows 10 mobile :( - chaque seconde lettre renvoie les géos à la position 0 + 1
ajouté l'auteur Jakub Wisniewski, source
merci Den .. édition de texte dans Windows Phone est vraiment une douleur!
ajouté l'auteur user3293835, source

Vous pouvez également définir CharacterCasing sur Upper dans la propriété de la zone de texte.

1
ajouté
il n'a pas KeyPress
ajouté l'auteur user3293835, source
Ce n'est pas disponible aussi :)
ajouté l'auteur user3293835, source
mis à jour ma réponse
ajouté l'auteur Miller, source

vous pouvez également utiliser l'événement de congé de zone de texte

il se déclenchera lorsque la zone de texte ne sera pas active En termes simples Elle se produira lorsque vous quitterez TextBox pour autre chose

private void textBox_Leave(object sender, EventArgs e)
{
  textBox.Text = textBox.Text.ToUpper();
}
0
ajouté

J'ai eu le même problème et j'ai trouvé une solution.

Étape 1: Assurez TextBox ReadOnly.

Étape 2: Capturez n'importe quelle touche enfoncée.

Vérifiez si la zone de texte souhaitée a le focus. Si true, soumettez le caractère à la zone de texte, mais en majuscule.

Terminé!

0
ajouté
cela signifie plus de travail, car l'utilisateur peut insérer un caractère n'importe où dans le texte
ajouté l'auteur user3293835, source
il faut parfois plus de travail !
ajouté l'auteur Amir Hashemieh, source
Et j'ai dit que vous devriez vérifier si la zone de texte que nous voulons a le focus!
ajouté l'auteur Amir Hashemieh, source

J'ai eu le même problème et j'ai trouvé une solution.

Étape 1: Assurez TextBox ReadOnly.

Étape 2: Capturez n'importe quelle touche enfoncée.

Vérifiez si la zone de texte souhaitée a le focus. Si true, soumettez le caractère à la zone de texte, mais en majuscule.

Terminé!

0
ajouté
cela signifie plus de travail, car l'utilisateur peut insérer un caractère n'importe où dans le texte
ajouté l'auteur user3293835, source
il faut parfois plus de travail !
ajouté l'auteur Amir Hashemieh, source
Et j'ai dit que vous devriez vérifier si la zone de texte que nous voulons a le focus!
ajouté l'auteur Amir Hashemieh, source