Событие DateTimePicker ValueChanged запускается в первый раз, когда нет изменений - PullRequest
3 голосов
/ 12 октября 2009

Winforms 2.0. Прикрепите DateTimePicker к форме. По умолчанию это СЕГОДНЯ. Нажмите на стрелку выпадающего меню, чтобы отобразить Календарь, и нажмите на СЕГОДНЯ. Событие ValueChanged ДЕЛАЕТ ОГОНЬ, даже если оно уже установлено на сегодняшний день.

То, что я хотел бы сделать, это повторить ту же самую функциональность - я хотел бы сбросить ее (в коде) на сегодняшний день, и в следующий раз, когда я нажму сегодня на календаре, я хочу, чтобы событие ValueChanged сработало (точно так же, как это было сделано). первый раз).

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

Звучит действительно просто, неужели у кого-то есть ответ?

Ответы [ 2 ]

6 голосов
/ 12 октября 2009

То, что вы видите, является побочным эффектом того факта, что DateTimePicker хранит компонент time его значения, а также дату.

Таким образом, когда ваша форма впервые инициализируется, DateTimePicker инициализируется с DateTime.Now. Когда вы выбираете «Сегодня» из его раскрывающегося календаря, вы меняете значение на DateTime.Today.

Если вам не важен компонент времени и / или вы всегда читаете значение как dateTimePicker1.Value.Date, тогда вы можете инициализировать элемент управления в коде с помощью DateTime.Now, и событие ValueChanged сработает, Пользователь выбирает Сегодня из календаря. В противном случае вы можете рассмотреть возможность перехвата события CloseUp, которое запускается при закрытии элемента управления календаря (независимо от того, изменилось ли значение).

0 голосов
/ 12 октября 2009

Я не программист выигрышных форм, но посмотрим, есть ли событие Day_Render. Это должно срабатывать каждый день ... по крайней мере, есть один для веб-разработки, но я думаю, что это то же самое. Так что ищите событие Render ().

...