Как проверить изменения в тексте

Рейтинг: 1Ответов: 1Опубликовано: 12.04.2015

Как проверить изменения в textBox при вызове FormClosing? Если документ был изменен то MessageBox спрашивает сохранить или же выйти без сохранения. Уже гугл поломал не смог найти ответа, может не правильно запрос делаю(( вот скрин вылез messagebox, до этого сообщения нужно обработать был ли текст изменен (Например: добавлена буква пробел символы и тп), если был изменен то выскакивает это предупреждениевведите описание изображения здесь

Ответы

▲ 1

UPD. Этот текст о способе отслеживаний изменений в целом

Отслеживание изменений в документе заключается в двух пунктах:

  1. Запоминание исходных данных (при открытии формы и загрузке данных)
  2. Сравнение исходных данных с актуальными (при закрытии формы)

Оба пункта могут решаться немного по-разному, в зависимости от того, какую цель вы ставите: отслеживать изменения в паре контролов, либо сделать более-менее универсальный механизм, который будет работать и для документа в сотню полей.

Изменения в паре контролов можно отслеживать "в лоб": завести N переменных, в которые будут сохраняться исходные данные. При необходимости узнать, были ли изменения, каждая из переменных будет сравниваться с актуальным значением.

Если же документы большие, либо у вас много подобных форм, то требуется несколько более универсальное решение, которое будет уметь запоминать большое количество исходных данных и сравнивать их с актуальными.

Решение попроще привязано к форме и к контролам: использовать словарь с именами контролов и исходными значениями. Запоминаете исходные значение после загрузке данных, затем при выходе сравниваете актуальные значения: для каждого контрола извлекаем из словаря исходное значение и сравниваем его со значением в контроле.

Решение, не привязанное к формам, требует наличия объекта с данными (POCO/DTO) и некоторого change tracker'а, который будет в точно такой же словарь запоминаете пары "поле - значение", считанные с помощью рефлексии, и уметь сказать, отличается ли запомненный объект от текущего.

Это если вкратце. Некоторые моменты, например, отслеживание изменений вложенных объектов, я опустил.

Код не писал, потому что написать его можно много. Если будут вопросы -- задавайте, обновлю ответ.