Come utilizzare provider di errore in fase di esecuzione insieme ad associare qualsiasi controllo per convalidare

StackOverflow https://stackoverflow.com/questions/2672708

Domanda

Sto cercando di creare una validazione in modo riutilizzabile.

Obiettivo: Effettuare il controllo di convalida riutilizzabile.

Provider errore dovrebbe associare il controllo passa in modo dinamico e può essere impostato o eliminato in fase di esecuzione.

Quando l'utente stampa evento onclick poi tutti i controlli ottiene convalidati con i propri fornitori di errore.

public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider,string msgToShowOnError)
{
    ErrorProvider EP = new ErrorProvider();
    if (txtControl.Text == string.Empty)
    {
        if(SetErrorProvider==true)
            EP.SetError(txtControl, msgToShowOnError);
        return true;
    }
    else
    {
        if(SetErrorProvider==true)
            EP.Clear();
        return false;
    }
}

Problema:

Ogni volta che la funzione viene chiamata nuovo oggetto viene creato ErrorProvider che non voglio. Ogni controllo non deve avere più di 1 Società di errore e dovrei essere in grado di cercare proprio come come fatto in asp.net per cercare un po 'di controllo in una pagina.

Come posso fare questo

È stato utile?

Soluzione

Nella maggior parte dei casi si ha realmente bisogno solo di un'istanza di ErrorProvider in un modulo.

per es.

ErrorProvider errorProvider1 = new ErrorProvider();

o semplicemente trascinare uno dalla casella degli strumenti nel form.

Quando si chiama un ErrorProvider, si fornisce il controllo e il messaggio ,,

errorProvider1.SetError (dateTimePicker1, "HEY BAD DATE");

Per eliminare l'errore ...

errorProvider1.SetError (dateTimePicker1, "");

Quindi, un caso ErrorProvider è tutto ciò che ha realmente bisogno in molte situazioni.

Altri suggerimenti

Fare il PropertyOnDemand come questo e l'accesso che la proprietà ogni volta u bisogno di nuova ErrorProvider

    private ErrorProvider _ErrorProvider = null;

    //PropertyOnDemand
    private ErrorProvider ErrorProviders
    {
        get
        {
            if (_ErrorProvider == null)
            {
                _ErrorProvider = new ErrorProvider();
                return _ErrorProvider;
            }
            else
                return _ErrorProvider;
        }
    }
    public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider, string msgToShowOnError)
    {

        if (txtControl.Text == string.Empty)
        {
            if (SetErrorProvider == true)
                ErrorProviders.SetError(txtControl, msgToShowOnError);
            return true;
        }
        else
        {
            if (SetErrorProvider == true)
                ErrorProviders.Clear();
            return false;
        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top