Win32: كيفية منع DateTimePicker من قبول سنوات من رقمين؟
-
29-09-2019 - |
سؤال
Microsoft DateTimePicker
يظهر السيطرة المشتركة التاريخ القصيروفقا لإعدادات تحديد المواقع التي تم تكوينها. تم تكوين جهاز كمبيوتر العميل باستخدام ShortDateFormat المكونة من عامين (d/M/yy
) ، لذلك يعرض DateTimePicker سنوات من رقمين:
عندما يركز المستخدم في كتلة العام من منتقي DateTime ، تشير Microsoft إلى المشكلة ، وتُظهر السنة المكونة من 4 أرقام:
ولكن بعد ذلك المستخدم ، يرغب في الدخول 1929
مع مرور عام ، الأنواع من رقم 2 من رقمين:
ثم عندما يقومون بتبادل التبويب ، فإنهم مرتبكون عندما يفسر Windows سنوات من رقمين على أنه بينهما 1930
و 2029
, ، ويفترض أن يكون 2029:
لدى العميل سياسة عالمية للشركة تملي تكوين الإعدادات الإقليمية لـ Windows لمدة عامين.
لذا ، كحل ، أحتاج إلى فرض كل شيء DateTimePicker
التحكم في استخدام تنسيق مخصص ، باستخدام السهل DateTime_SetFormat
دقيق:
DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");
هذا يساعد ، بحيث الآن DateTimePicker
الآن يظهر دائمًا عامًا من 4 أرقام:
المشكلة هي أنه لا يزال بإمكان المستخدم كتابة "غير صالحة"عامين من رقمين:
أي Windows لا يزال يتفسير ، وفقًا للقواعد ، في عام 2029:
أحتاج إلى منتقي وقت التاريخ لرفض سنوات من رقمين.
إذا لم يتمكن هذا من العمل ، فستضطر إلى استبدال كل datetimepicker بـ 3 مربعات تحرير:
22 6 29
حيث يمكنني تلوين أرقام غير صالحة باللون الأحمر ، وأشير إلى إدخال البيانات غير الصالح من قبل المستخدم.
كيف يمكنني منع DateTimePicker من قبول الأخطاء y2k؟
لا يوجد حل صحيح
نصائح أخرى
إذا قمت بإضافة نمط نافذة DTS_APPCANPARSE ، فيمكنك التعامل مع WM_NOTIFY: DTN_USERSTRING MESSICTION وتحليل السلسلة بنفسك