Элемент управления datetimepicker
Какое событие должно быть запущено, когда пользователь выбирает какую-либо дату в DateTimePickerControl? Я использовал dateTimePicker1_ValueChanged () . Но он срабатывает даже тогда, когда пользователь прокручивает время выбора даты.
Я хочу, чтобы его уволили только тогда, когда пользователь внес некоторые изменения. Как в выпадающем списке выделенного события.
2 ответа
Взгляните на документацию MSDN. Особенно событие OnValueChanged
Вам нужно будет подключить свой контроль с помощью этого события:
В методе конструктора:
dateTimePickerControl.ValueChanged += new EventHandler(picker_ValueChanged);
И вот подпись метода:
void f_ValueChanged(object sender, EventArgs e)
{
//Do whatever you need when the value changes here
}
Вы также можете сделать это от дизайнера. Если вы перейдете в Свойства, а затем в раздел События, в нем перечислены все события. Просто дважды щелкните, и он создаст подпись метода и проводку для вас.
ОБНОВЛЕНИЕ К ВАШЕМУ ОБНОВЛЕНИЮ
Если вы специально хотите проверить, является ли это программным изменением или нет, то вы хотите сделать что-то вроде этого:
Создайте глобальную переменную в вашем классе
Boolean isProgrammaticEvent = false;
Перед вашим программным изменением:
isProgrammaticEvent = true;
//Change picker value
В вашем случае проводка:
void f_ValueChanged(object sender, EventArgs e)
{
Boolean isThisProgrammatic = isProgrammaticEvent;
isProgrammaticEvent = false;
if(isThisProgrammatic)
return;
}
Попробуйте MouseCaptureChanged (). Он не будет срабатывать при прокрутке
private void dateTimePicker1_MouseCaptureChanged(object sender, EventArgs e)
{
DateTime result = dateTimePicker1.Value;
MessageBox.Show(result.ToString());
}