.NET - Как скрыть недопустимые варианты в DateTimePicker
-
02-07-2019 - |
Вопрос
Я установил свойства maxDate и minDate для DateTimePicker.Однако, когда я тестирую элемент управления во время выполнения, нет способа отличить недопустимые даты от действительных.Единственное отличие заключается в том, что нажатие на недопустимую дату ничего не дает.
Это не очень интуитивно понятно для пользователя.Я хочу иметь возможность с первого взгляда определить, каковы действительные даты.
Есть ли какой-нибудь способ выделить допустимый диапазон дат - или, что более уместно, "затемнить" недопустимые даты?Или есть ли другой элемент управления, который был бы более подходящим?Я уверен, что пара полей со списком сработала бы, но я действительно думаю, что пользователю следует предоставить элемент управления календарем, когда его попросят указать дату.
КОНТЕКСТ:Это приложение для построения графиков WinForms.Диапазон допустимых данных фиксирован (новые данные добавляются с помощью другого процесса).Пользователю необходимо выбрать дату и время для начала диаграммы (а также длительность, которая обрабатывается отдельно).
Решение
У меня похожая проблема.Я расширил элемент управления DateTimePicker, чтобы запускать процесс проверки при каждом изменении значения и либо возвращаться к предыдущему значению, либо к ближайшему допустимому значению в случае незаконного выбора.
Логическим продолжением этого является появление диалогового окна с предупреждением или метки, информирующей пользователя о том, что это произошло.
Вы также можете переопределить часть элемента управления "Отображение календаря", чтобы выделить / приглушить недопустимые параметры - например, он уже выделяет текущий день и текущий выбор.
Другие советы
Я не уверен, что есть возможность без расширения контроля самостоятельно и рисования владельцем, что потребовало бы усилий.
Если вы не можете найти нужную функциональность после, я бы рассмотрел возможность использования элемента управления ErrorProvider и проверки ввода пользователей в качестве опции.