Come utilizzare provider di errore in fase di esecuzione insieme ad associare qualsiasi controllo per convalidare
-
28-09-2019 - |
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
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;
}
}