Значение текстового поля изменяется

Действительно ли возможно знать, изменилось ли какое-либо из значений текстового поля в приложении. У меня есть приблизительно 30 текстовых полей, и я хочу выполнить часть кода, только если, любое значение текстовых полей изменилось из 30. Есть ли способ, которым я могу знать это.

5
задан developer 6 April 2010 в 19:19
поделиться

4 ответа

Каждое текстовое поле вызывает событие TextChanged при изменении его содержимого. Однако это требует, чтобы вы подписывались на каждое событие.

Хорошая новость в том, что вы можете подписаться на событие одним и тем же методом несколько раз. В обработчике есть параметр отправитель , который вы можете использовать, чтобы определить, какое из ваших 30 текстовых полей действительно вызвало событие.

Вы также можете использовать события GotFocus и LostFocus , чтобы отслеживать фактические изменения. Вам нужно будет сохранить исходное значение на GotFocus , а затем сравнить с текущим значением на LostFocus . Это решает проблему двух событий TextChanged , отменяющих друг друга.

10
ответ дан 18 December 2019 в 11:55
поделиться

Вы можете назначить обработчик события для каждого из событий TextBox's TextChanged. Все они могут быть назначены на один и тот же обработчик событий в коде. Тогда вы будете знать, когда текст изменится. Вы можете установить в своем классе поле с булевым флагом, чтобы записать, что произошло изменение.

2
ответ дан 18 December 2019 в 11:55
поделиться

попробуйте это. Добавьте этот код в загрузку / конструктор. нет необходимости явно указывать событие в XAML

this.AddHandler(TextBox.TextChangedEvent, new TextChangedEventHandler(TextChanged));
private void TextChanged(object Sender, TextChangedEventArgs e)
{
    //ToDO (use sender to identify the actuale text from where it fired }
}
1
ответ дан 18 December 2019 в 11:55
поделиться

Это, возможно, грубая и готовая сторона, но я сделал это таким образом.

В конструкторе я создал

bool bChanged = false;

В обработчике событий TextChanged каждого элемента управления (фактически одинакового для каждого) я помещаю

bChanged = true;

Когда это необходимо, Я мог бы немного обработать и вернуть bChanged обратно в false.

1
ответ дан 18 December 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: