Win32: Как предотвратить DateTimePicker принять 2-значные годы?
-
29-09-2019 - |
Вопрос
Microsoft's. DateTimePicker
Общие контрольные шоу ШортСогласно настроенным параметрам локали. Компьютер клиента настроен с 2-значным годом ShortDateFormat (d/M/yy
), поэтому DateTimePicker показывает 2-значные годы:
Когда пользователь ставит фокус в году Block of The DateTime Picker, Microsoft указывает на проблему и показывает полный 4-значный год:
Но потом пользователь, желающий ввести 1929
В течение года типы 2-значный год:
А затем, когда они вкладывают, они путают, когда Windows интерпретирует свои 2-значные годы как между 1930
и 2029
, И предполагается, что это 2029:
У клиента есть глобальная корпоративная политика на месте, которая диктует, что региональные настройки Windows будут настроены на 2-значные годы.
Так как обходной путь мне нужно заставить каждый DateTimePicker
Контроль, чтобы использовать пользовательский формат даты, используя удобное DateTime_SetFormat
макрос:
DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");
Это помогает, так что сейчас DateTimePicker
Теперь всегда показывает 4-значный год:
Проблема в том, что пользователь все еще может вводить в «неверный«2-значный год:
Какие окна все еще неинструменты, согласно правилам, как 2029:
Мне нужен сбор даты, чтобы отклонить 2-значные годы.
Если это не может работать, я буду вынужден заменить каждый dateTimepicker с 3 редактировать поля:
22 6 29
Где я могу окрашивать недействительные числа красным и укажите неверную запись данных пользователем.
Как я могу помешать DateTimePicker принять ошибки Y2K?
Нет правильного решения
Другие советы
Если вы добавите окно DTS_AppCanSARSARSASARSE, вы можете обрабатывать сообщение WM_NOTIFY: DTN_USERSTRING и проанализируйте свою строку