.NET - DateTimePicker で無効な選択肢を非表示にする方法
-
02-07-2019 - |
質問
DateTimePicker の MaxDate プロパティと MinDate プロパティを設定しました。ただし、実行時にコントロールをテストする場合、無効な日付と有効な日付を区別する方法はありません。唯一の違いは、無効な日付をクリックしても何も起こらないことです。
これはユーザーにとってあまり直感的ではありません。有効な日付が一目でわかるようにしたい。
有効な日付範囲を強調表示する方法、またはより適切には、無効な日付を「淡色表示」する方法はありますか?それとも、より適切な別のコントロールはありますか?いくつかのコンボ ボックスが機能すると確信していますが、日付を尋ねられた場合、ユーザーにはカレンダー コントロールが表示されるべきだと私は本当に思います。
コンテクスト:これは WinForms グラフ作成アプリケーションです。有効なデータの範囲は固定です(新たなデータは別プロセスで追加されます)。ユーザーは、チャートの開始時刻の日付と時刻 (および、別途処理される期間) を選択する必要があります。
解決
私も同様の問題を抱えています。DateTimePicker コントロールを拡張して、値が変更されるたびに検証プロセスを実行し、不正な選択があった場合には前の値または最も近い正当な値に戻すようにしました。
これの論理的な拡張は、警告ダイアログまたはラベルをフラッシュして、これが発生したことをユーザーに通知することです。
また、コントロールのカレンダー表示部分をオーバーライドして、無効なオプションをハイライト/ローライト表示することもできます。たとえば、今日の日付と現在の選択内容がすでにハイライト表示されています。
他のヒント
自分でコントロールを拡張したり、オーナーが描画したりする必要があるかどうかはわかりません。
必要な機能が見つからない場合は、オプションとして ErrorProvider コントロールの使用とユーザー入力の検証を検討します。