1
I have this form:
As the person puts the date of birth and clicks on identify category is made two checks:
- If the name has been filled in;
 - If the date of birth is greater than the current date;
 
But the validation is not working as it should, see the codes:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _2.MatriculaAluno
{
    public partial class frmMatriculaAlunoV2 : Form
    {
        public frmMatriculaAlunoV2()
        {
            InitializeComponent();
            lblHoje.Text = "Hoje é " + DateTime.Now.ToShortDateString(); //Fornece a data atual a label
        }
        private void frmMatriculaAlunoV2_Load(object sender, EventArgs e)
        {
        }
        private void btnIdentificar_Click(object sender, EventArgs e)
        {
            TimeSpan TsQuantidadeDias = DateTime.Now.Date - dtpDataNascimento.Value;
            int idade = (TsQuantidadeDias.Days / 365);
            if (txtNome.Text == String.Empty)
            {
                MessageBox.Show("Todos os dados solicitados devem ser informados", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (idade > 17)
                {
                    lblCategoria.Text = "Adulto";
                }
                else if (idade > 13)
                {
                    lblCategoria.Text = "Juvenil B";
                }
                else if (idade > 10)
                {
                    lblCategoria.Text = "Juvenil A";
                }
                else if (idade > 7)
                {
                    lblCategoria.Text = "Infantil B";
                }
                else if (idade >= 5)
                {
                    lblCategoria.Text = "Infantil A";
                }
                else
                {
                    lblCategoria.Text = "Não existe categoria";
                }
            }
        }
        private void lblHoje_Validating(object sender, CancelEventArgs e)
        {
            if (dtpDataNascimento.Value.Year < DateTime.Now.Date.Year)
            {
                MessageBox.Show("O ano do último aniversário deve ser superior ao do ANO DE NASCIMENTO", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                e.Cancel = true; // não deixa passar a validação até o usuário não arrumar
            }
        }
    }
}
Observation, the event
Validatingis referenced in the current date label and date of birth.

Which part isn’t working, young man?
– Jéf Bueno
@LINQ was to give an error message when I put the date of birth higher than the current date
– WSS