При попытке сделать что-то более сложное, я столкнулся с поведением, которое я не совсем понимаю.TextChanged Events - Почему это не приводит к бесконечному циклу?
Используйте следующий код, приведенный ниже, для обработки события textChanged.
private void textChanged(object sender, TextChangedEventArgs e)
{
TextBox current = sender as TextBox;
current.Text = current.Text + "+";
}
Теперь, введя символ в текстовом поле (скажем, А) приведет событие получения споткнулся дважды (добавление двух «+» с) с окончательным текстом, отображаемым быть только A +.
Мои два вопроса: почему это событие произошло только дважды? И почему только первый прогон через событие фактически устанавливает текст текстового поля?
Заранее спасибо!
почему вопрос, который, кажется, имеет мало смысла иметь 3 upvotes менее чем за 4 минуты? Я не понимаю .... –
... поднялся до 5 голосов, а затем вернулся к 3? hmmmmm ... –
Событие TextBox.TextChanged возникает при изменении TextBox.Text. Образец кода, однако, изменяет текст во время этого уведомления, что должно привести к дальнейшему повышению TextChanged, который затем приведет к новому изменению текста, который будет ... -> Бесконечная рекурсия.
Я не знал, что этот специальный случай явно обрабатывается классом TextBox - описанный эффект НЕ будет происходить. Вместо этого TextChanged будет подниматься только один раз. Я кое-чему научился через этот вопрос и поэтому поддержал его. – Matthias