venerdì 14 marzo 2014

Controllo Automatico Data e Ora inserito in un Label , MaskTextBox e TextBox C#

Capita spesso di dover eseguire dei controlli sul testo contenuto in un Label, TextBox o MaskTextBox e nel dover dare un feedback all'utente nella correttezza dei dati inseriti. In aiuto in questo caso ci arrivano le regole REGEX che tramite una stringa di formattazione andiamo a controllare il testo che l'utente ha inserito e a segnalarli qualche errore.
L'esempio seguente mostra come controllare due campi, uno data e l'altro orario, e come viene segnalato all'utente tramite una colorazione rossa o bianca la correttezza dei dati inseriti. Il codice è poi inserito all'interno dell'evento di "TextChanged" del controllo in modo da avere un riscontro in tempo reale ad ogni carattere inserito.


Code:
void mTextBoxOra_TextChanged(object sender, SystemEventArgs e)
{
    Regex OraFormat = new Regex(@"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]#CODE#quot;);

    if (!OraFormat.Match(mTextBoxOra.Text).Success)
    {
        mTextBoxOra.BackColor = Color.Coral;
    }
    else
    {
        mTextBoxOra.BackColor = Color.White;
    }
}

void mTextBoxData_TextChanged(object sender, SystemEventArgs e)
{
    Regex DataFormat = new Regex(@"^(((((0[1-9])|(1\d)|(2[0-8]))\/((0[1-9])|(1[0-2])))|((31\/((0[13578])|(1[02])))|((29|30)\/((0[1,3-9])|(1[0-2])))))\/((20[0-9][0-9])|(19[0-9][0-9])))|((29\/02\/(19|20)(([02468][048])|([13579][26]))))#CODE#quot;);

    if (!DataFormat.Match(mTextBoxData.Text).Success)
    {
        mTextBoxData.BackColor = Color.Coral;
    }
    else
    {
        mTextBoxData.BackColor = Color.White;
    }
}