I have this form:
Asthepersonplacesthedateofbirthandclicksonidentifycategory,twochecksaredone:
- Ifthenamewasfilled;
- Ifthedateofbirthisgreaterthanthecurrentdate;
Butthevalidationisnotworkingasitshould,seethecodes:
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespace_2.MatriculaAluno{publicpartialclassfrmMatriculaAlunoV2:Form{publicfrmMatriculaAlunoV2(){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
}
}
}
}
Note, the
Validating
event is referenced in the Label of the current date and date of birth.