Win32: Как запретить DateTimePicker принимать двухзначные годы?

От Microsoft DateTimePicker общий элемент управления показывает ShortDate в соответствии с настроенными настройками локали. Компьютер клиента настроен на двузначный год ShortDateFormat (d/M/yy), поэтому DateTimePicker показывает двузначные годы:

http://i48.tinypic.com/15gxfys.jpg

Когда пользователь помещает фокус в блок года средства выбора даты и времени, Microsoft указывает на проблему и показывает полный год из 4 цифр:

http://i50.tinypic.com/2po5qc7.jpg

Но тогда пользователь, желая войти 1929 как год, введите двухзначный год:

http://i46.tinypic.com/2hrltlh.jpg

И затем, когда они выходят из системы, они смущаются, когда Windows интерпретирует их двухзначные годы как 1930 а также 2029 и предполагается, что это 2029:

http://i48.tinypic.com/j139qb.jpg

У клиента есть глобальная корпоративная политика, которая требует, чтобы региональные настройки Windows были настроены на двузначные годы.

Так что в качестве обходного пути мне нужно заставить каждый DateTimePicker контроль использовать пользовательский формат даты, используя удобный DateTime_SetFormat макрос:

DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");

Это помогает, так что теперь DateTimePicker теперь всегда показывает 4-значный год:

http://i46.tinypic.com/2rcpt2q.jpg

Проблема в том, что пользователь все еще может ввести " недопустимый " двухзначный год:

http://i46.tinypic.com/2hrltlh.jpg

Какую Windows все еще интерпретируют, согласно правилам, как 2029:

http://i46.tinypic.com/2rcpt2q.jpg

мне нужен сборщик даты и времени, чтобы отклонить 2-значные годы.

Если это не может работать, то я буду вынужден заменить каждый DateTimePicker на 3 поля ввода:

22 6 29

Где я могу покрасить недопустимые числа в красный и указать неверный ввод данных пользователем.

Как я могу запретить DateTimePicker принимать ошибки 2000 года?

1 ответ

Если вы добавите стиль окна DTS_APPCANPARSE, вы можете обработать сообщение WM_NOTIFY: DTN_USERSTRING и проанализировать строку самостоятельно.

Другие вопросы по тегам