.NET - Como esconder escolhas inválidos em um DateTimePicker
-
02-07-2019 - |
Pergunta
Eu definir as propriedades MaxDate e MinDate de um DateTimePicker. No entanto, quando eu testar o controle em tempo de execução, não há nenhuma maneira de dizer as datas inválidos dos válidos. A única diferença é que o clique em uma data inválida não faz nada.
Isto não é muito intuitiva para o usuário. Eu quero ser capaz de dizer em poucas palavras o que as datas são válidos.
Existe alguma maneira de destacar o intervalo de datas válido - ou mais apropriadamente, 'dim' as datas inválidos? Ou, há outro controle que seria mais apropriado? Estou certo de um par de caixas de combinação iria funcionar, mas eu realmente acho que o usuário deve ser apresentado com um controle de calendário quando perguntado sobre uma data.
CONTEXTO: Este é um WinForms gráficos aplicação. O intervalo de dados válidos é fixo (novos dados são adicionados por meio de outro processo). As necessidades do usuário para escolher uma data e hora para o horário de início do gráfico (bem como a duração, que é tratado separadamente).
Solução
Eu tenho um problema semelhante. Eu já estendeu o controle DateTimePicker para executar um processo de validação sempre que o valor muda e quer reverter para o valor anterior ou para o valor legal mais próximo, no caso de uma escolha ilegal.
A extensão lógica para isso é a piscar-se um diálogo de aviso ou etiqueta para informar ao usuário que isso tenha acontecido.
Você também pode substituir a parte do controle de exibição calendário para destaque / lowlight as opções inválidos - já destaca o dia atual e a seleção atual, por exemplo.
Outras dicas
Im não tem certeza de que há sem estender o controle mesmo, e desenho proprietário que seria um esforço.
Se você não puder encontrar a funcionalidade o seu depois, eu consideraria o uso de um controle ErrorProvider e validar a entrada de usuários como uma opção.