代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

如何防止DateTimePicker接受两位数的年份?

  •  2
  • Ian Boyd  · 技术社区  · 14 年前

    微软的 DateTimePicker 通用控件显示 短日期 根据配置的区域设置。客户的计算机配置为2位数的年份短日期格式( d/M/yy ),因此DateTimePicker显示两位数的年份:

    alt text

    当用户将焦点放在datetime选择器的year块中时,Microsoft会指出问题,并显示完整的4位数年份:

    alt text

    但是用户,想要进入 1929 作为一年,请键入2位数的年份:

    alt text

    当他们退出时,当Windows将他们的2位数年份解释为介于 1930 2029 ,假设为2029年:

    alt text

    该客户已制定了一项全球公司策略,要求将Windows区域设置配置为2位数的年份。

    所以作为解决办法我需要 日期输入框 控件使用自定义日期格式,使用 DateTime_SetFormat macro :

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

    这有帮助,所以现在 日期输入框 现在总是显示4位数的年份:

    alt text

    问题是用户仍然可以键入“ 无效的 “2位数年份:

    alt text

    根据规定,2029年,哪些窗口仍在计算:

    alt text

    我需要日期时间选择器来拒绝2位数的年份。

    如果这不起作用,那么我将被迫用3个编辑框替换每个DateTimePicker:

    二十二 二十九

    在这里我可以将无效数字涂成红色,并指出用户输入的无效数据。

    如何防止DateTimePicker接受y2k错误?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Anders    14 年前

    如果添加DTSUpAppCANPARSE窗口样式,您可以处理WMyNoTe:DTNU-UsReString消息并自己解析字符串。