Здравствуйте, Nixon, Вы писали:
N>Предвариельная постановка: есть набор контроллов отображающих информацию о записи определенного вида N>textBox1 N>textBox2 N>... N>dateTimePicker1
N>При перемещении по записям происходит примерно следующее
N>private void Read() N>{ N>textBox1.Text = current.Lastname; N>... N>dateTimePicker1.Value = current.Date; N>}
N>Задача: необходимо отследить изменения внесенные пользователем в значение контролла
N>Для этого добавляем слушателя события
N>textBox1.TextChanged += new EventHandler(textBox1_TextChanged); N>... N>dateTimePicker1.ValueChanged += new EventHandler(dateTimePicker1_ValueChanged);
N>После этого как только мы программно изменяем свойство Text или Value (например при переходе между записями) генерируется событие при этом для TextBox я могу отличить программный ввод от пользовательского по свойству Modified, а вот для DateTimePicker ничего подобного не обнаружил.
N>Испробованные варианты: N>1. Биндить свойство Value DateTimePicker'а на переменную DateTime, результат аналогичный.
1)Можно создать переменную bool programModified,
перед началом изменения программно устанавливаем programModified = true, после окончания устанавливаем programModified = false
В каждом обработчике смотрим, if (programModified) {/*Твой код*/}
2) 2 -й вариант похож на 1-й, за исключением того, что всё логику можно вынести в класс, который будет описывать состояние твоего объекта и в нём проводить изменения и забандить контролы на экземпляр этого класса ... + этого варианта в том, что не нужно подписываться на события контролов и самое главное, если ты поменяешь котнролы то логика сохранится