WindowsフォームのDateTimePickerコントロールで非常に特殊なバグに遭遇しました。コントロールには、カスタム形式(MM-YYYY-> 2010年1月)(クレジットカードの月/年)があります。今日は9月29日です。ユーザーがコントロールを選択し、キーボードを使用して月を2月に設定すると、コントロールはArgumentOutOfRangeExceptionをスローします。2009年2月29日などの日付はありません。これは31日の日にも発生し、30日しかない月に移行します。
日を「01」に設定することでこれを処理するのは簡単ですが、ユーザーはカレンダーをクリックして手動で30日を選択し、キーボードを使用して2月を選択できます。
入力が実際にはコードではなくGUIで行われている場合、この例外をどのようにキャッチできますか?TextChangedイベントでそれをキャッチしようとしましたが、それはすでに手遅れです。例外はすでにスローされています。
このケースを処理する方法はありますか?コントロールが自動的にその月の最高値に日を変更するといいでしょう。または、少なくともイベントを介して例外を渡した場合。
(KeyPressedイベントをトラップして、その日を毎回01に設定できることは承知していますが、これは「ハッキー」な感じがします)。