Re: DateTimePicker пользовательский и программный ввод
От: kisel Украина  
Дата: 12.06.07 14:49
Оценка:
Здравствуйте, 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-й, за исключением того, что всё логику можно вынести в класс, который будет описывать состояние твоего объекта и в нём проводить изменения и забандить контролы на экземпляр этого класса ... + этого варианта в том, что не нужно подписываться на события контролов и самое главное, если ты поменяешь котнролы то логика сохранится
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.