Usuário com melhor resposta
checar data de nascimento

Pergunta
-
Galera,
no sisteminha que estou desenvolvendo, haverá um idade mínima para exigir o preenchimento de todos os campos. Por exemplo pessoas com idade menor que 10, bastaria preencher somente o nome e a data de nascimento. Acima desta, todos os outros campos seriam obrigatórios.
Comecei com este código:
private void btnChecar_Click(object sender, EventArgs e) { if(Convert.ToDateTime(txtDataNasc.Text).AddYears(10) < DateTime.Now) { MessageBox.Show("Familiar menor de 10 anos!"); } }
mas não deu certo. Deu esse erro no if (Additional information: Cadeia de caracteres não foi reconhecida como DateTime válido.)
A ideia é checar a idade, e desabilitar os demais campos.
O que fiz de errado?
Obrigado
kildare
Respostas
-
Olá,
Pelo erro, parece que o seu textbox está vazio ou com um valor que não pode ser convertido para DateTime.
Verifique se esse seu campo está com conteúdo nesse padrão dd/MM/yyyy.
Para conseguir verificar isso em tempo de execução, recomendo colocar um breakpoint nessa linha e ir debugando
Valeu!
- Marcado como Resposta Robson William SilvaModerator quinta-feira, 28 de julho de 2016 12:23
Todas as Respostas
-
Olá,
Pelo erro, parece que o seu textbox está vazio ou com um valor que não pode ser convertido para DateTime.
Verifique se esse seu campo está com conteúdo nesse padrão dd/MM/yyyy.
Para conseguir verificar isso em tempo de execução, recomendo colocar um breakpoint nessa linha e ir debugando
Valeu!
- Marcado como Resposta Robson William SilvaModerator quinta-feira, 28 de julho de 2016 12:23
-
-
Cara,
Dessa forma aqui , independente do formato do seu campo ele irá fazer a conversão. tente aee
DateTime DataAtual; DateTime.TryParse(textBox1.Text, out DataAtual); if(DateTime.Today.Year - DataAtual.Year < 10) { MessageBox.Show("É menor"); } else { MessageBox.Show("É maior"); }
Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>
-
Desculpa, mas discordo do Diego. O método TryParse realmente evita erros de conversão, porém se na TextBox o usuário informar o valor ou data que não exista, como por exemplo: "teste" ou "55/55/2011" o resultado da variável "DataAtual" ficará "01/01/0001" que é o valor inicial do DateTime. Dessa forma a verificação que segue abaixo seria comprometida.
Kildare, você até pode usar o método TryParse, mas deve colocar uma verificação antes de determinar se o usuário tem menos ou mais de 10 anos.
-
Secco,
Um if resolve isso:
DateTime DataAtual; DateTime.TryParse(textBox1.Text, out DataAtual); if (DataAtual == new DateTime(0001, 01, 01)) MessageBox.Show("Data Inválida"); else { if (DateTime.Today.Year - DataAtual.Year < 10) { MessageBox.Show("É menor"); } else { MessageBox.Show("É maior"); } }
Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>
- Sugerido como Resposta Código Expresso quarta-feira, 27 de julho de 2016 17:35
-
-