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
теперь всегда показывает четырехзначный год:
альтернативный текст http://i46.tinypic.com/2rcpt2q.jpg
Проблема в том, что пользователь по-прежнему может вводить двухзначный год " недопустимый ":
альтернативный текст http://i46.tinypic.com/2hrltlh.jpg
Какую Windows по-прежнему интерпретируют в соответствии с правилами как 2029:
альтернативный текст http://i46.tinypic.com/2rcpt2q.jpg
Мне нужен инструмент выбора даты и времени для отклонения двухзначных лет.
Если это не сработает, я буду вынужден заменить каждый DateTimePicker на 3 поля ввода:
22 * 1060 * 6 29
Где я могу закрасить недопустимые числа красным и указать на неверный ввод данных пользователем.
Как я могу запретить DateTimePicker принимать ошибки y2k?