Win32:DateTimePickerが2桁の年を受け入れるのを防ぐ方法は?
-
29-09-2019 - |
質問
Microsoft's DateTimePicker
一般的な制御が示されています 短命構成されたロケール設定によると。顧客のコンピューターは、2桁の年の短命のフォームで構成されています(d/M/yy
)、したがって、DateTimePickerには2桁の年が表示されます。
ユーザーがDateTimeピッカーの年ブロックにFocusを置くと、Microsoftはこの問題を指摘し、4桁の年の年を示します。
しかし、その後、ユーザーは入力したい 1929
1年として、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_appcanparseウィンドウスタイルを追加すると、wm_notify:dtn_userstringメッセージを処理し、文字列を自分で解析できます