3

Microsoft のDateTimePicker共通コントロールは、構成された Locale 設定に従ってShortDateを表示します。顧客のコンピューターは 2 桁の年 ShortDateFormat ( d/M/yy) で構成されているため、DateTimePicker には 2 桁の年が表示されます。

代替テキスト

ユーザーが日時ピッカーの年ブロックにフォーカスを置くと、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年としてまだ解釈されているWindowsは次のとおりです。

代替テキスト

2 桁の年を拒否する日時ピッカーが必要です。

これが機能しない場合は、すべての DateTimePicker を 3 つの編集ボックスに置き換える必要があります。

22 6 29

無効な数字を赤く色付けし、ユーザーによる無効なデータ入力を指摘できる場所。

DateTimePicker が y2k バグを受け入れないようにするにはどうすればよいですか?

4

1 に答える 1

1

DTS_APPCANPARSE ウィンドウ スタイルを追加すると、WM_NOTIFY: DTN_USERSTRING メッセージを処理し、自分で文字列を解析できます。

于 2010-06-22T18:52:32.980 に答える