IDADE EM C#

ALANTB 06/10/2015 12:30:44
#452211
Olá, achei uma função de calculo de idade em c# mas não tô conseguindo inserir no meu código. Preciso que um maskedtextbox ao peder o foco e no evento changed calcule a idade do funcionário conforme a data de nascimento no masked e mostre o resultado em um label. Nessa função onde coloco o masked e o label? Ou por acaso tem uma maneira mais fácil???

public static int calculaIdade(DateTime dtNascimento)
{
int idade = DateTime.Now.Year - dtNascimento.Year;
if (DateTime.Now.Month < dtNascimento.Month || (DateTime.Now.Month == dtNascimento.Month && DateTime.Now.Day < dtNascimento.Day))
idade--;

return idade;
}

ALAN
TUNUSAT 06/10/2015 13:16:51
#452215
Resposta escolhida
ALANTB,

Com o [Ô]Validated[Ô] funcionou, com o [Ô]textChanged[Ô] NÃO funcionou...
...exemplo tosco:
==========================================
Evento Control.LostFocus
https://msdn.microsoft.com/pt-br/library/system.windows.forms.control.lostfocus(v=vs.110).aspx
DateTime teste;

private void maskedTextBox1_Validated(object sender, EventArgs e)
{
teste = Convert.ToDateTime(maskedTextBox1.Text);

label1.Text = calculaIdade(teste).ToString();
}

==========================================
Evento LostFocus em TextBox (C#)
https://social.msdn.microsoft.com/Forums/pt-BR/5eaaa437-9724-4ca9-a872-1b2cc288062c/evento-lostfocus-em-textbox-c?forum=aspnetpt
Citação:

Odair,
Apesar de o método se chamar textChanged(), ele somente é acionado quando o usuário tira o foco do texbox, seja com um tab ou com um clique fora do controle. Além disso, é necessário ter havido alteração no texto digitado. Isso o torna, em alguns casos, ainda mais eficiente que o lostFocus(); principalmente quando não é possível fugir de um postback.
Cláudia F. Uehara


==========================================

Mas é preciso ter CERTEZA que o [Ô]maskedTextBox1[Ô] tem uma data válida!

[][ô]s,
Tunusat.
JABA 06/10/2015 13:22:47
#452217
private void maskedtextbox_TextChanged(object sender, System.EventArgs e)
{
label.Text = calculaIdade((DateTime) maskedtextbox.Text).ToString();
}

ou

private void maskedtextbox_LostFocus(object sender, System.EventArgs e)
{
label.Text = calculaIdade((DateTime) maskedtextbox.Text).ToString();
}
ALANTB 07/10/2015 01:14:42
#452249
JABA, tentei não deu, talvez faltou alguma coisa no meu código.
TUNUSAT adaptei a função que tu passou acima e funcionou pra mim nos dois eventos. Valeu mais uma vez pessoal, vou adiante....!!!
Tópico encerrado , respostas não são mais permitidas