En essayant de faire quelque chose d'un peu plus compliqué, j'ai rencontré un comportement que je ne comprends pas très bien.TextChanged Events - Pourquoi cela n'aboutit-il pas à une boucle infinie?
Supposons que le code suivant traite l'événement textChanged.
private void textChanged(object sender, TextChangedEventArgs e)
{
TextBox current = sender as TextBox;
current.Text = current.Text + "+";
}
Maintenant, en tapant un caractère dans la zone de texte (par exemple, A) se traduira par l'événement se déclenche deux fois (en ajoutant deux « + » s) avec le texte final affiché étant juste A +.
Mes deux questions sont, pourquoi l'événement est-il frappé seulement deux fois? Et pourquoi seulement la première exécution de l'événement définit-elle le texte de la zone de texte?
Merci d'avance!
pourquoi une question qui semble faire peu de sens ont 3 upvotes en moins de 4 minutes? Je ne comprends pas ... –
... est allé jusqu'à 5 voix, puis de nouveau à 3? hmmmmm ... –
L'événement TextBox.TextChanged est déclenché lorsque TextBox.Text a été modifié. L'exemple de code, cependant, change le texte au cours de cette notification qui devrait entraîner une nouvelle augmentation de TextChanged qui entraînera alors un nouveau changement de texte qui va ... -> Récursivité sans fin.
Je ne savais pas que ce cas particulier est explicitement géré par la classe TextBox - l'effet décrit ne se produira pas. Au lieu de cela, TextChanged ne sera levé qu'une seule fois. J'ai appris quelque chose à travers cette question et je l'ai donc mise en avant. – Matthias