Während ich versuchte, etwas komplizierter zu machen, stieß ich auf ein Verhalten, das ich nicht ganz verstehe.TextChanged-Ereignisse - Warum führt dies nicht zu einer Endlosschleife?
Nehmen Sie den folgenden Code unter der Behandlung des textChanged-Ereignisses an.
private void textChanged(object sender, TextChangedEventArgs e)
{
TextBox current = sender as TextBox;
current.Text = current.Text + "+";
}
Jetzt, in der Textbox ein Zeichen eingeben (zum Beispiel A) führt in dem Ereignisse zweimal ausgelöst zu werden (das Hinzufügen von zwei s '+') mit dem endgültigen Text angezeigt nur A + zu sein.
Meine zwei Fragen sind, warum wird das Ereignis nur zweimal getroffen? Und warum legt nur der erste Durchlauf des Ereignisses den Text der Textbox fest?
Vielen Dank im Voraus!
warum eine Frage, die wenig Sinn hat 3 upvotes in weniger als 4 Minuten zu machen scheint? Ich verstehe es nicht .... –
... ging auf 5 Stimmen und dann zurück auf 3? hmmmmm ... –
Das Ereignis TextBox.TextChanged wird ausgelöst, wenn TextBox.Text geändert wurde. Der Beispielcode ändert jedoch den Text während dieser Benachrichtigung, was zu einer weiteren Erhöhung von TextChanged führen sollte, was dann zu einer neuen Änderung von Text führen wird, die ... -> endlose Rekursion.
Ich wusste nicht, dass dieser spezielle Fall explizit von der TextBox-Klasse behandelt wird - der beschriebene Effekt tritt NICHT auf. Stattdessen wird TextChanged nur einmal ausgelöst. Ich habe durch diese Frage etwas gelernt und es deshalb aufgewertet. – Matthias