Как использовать поставщик ошибок во время выполнения вместе с ассоциированием любого элемента управления для проверки
-
28-09-2019 - |
Вопрос
Я пытаюсь создать проверку в многоразовой моде.
Цель:Сделайте контроль проверки многоразовым.
Поставщик ошибок должен связываться с переданным управлением динамически и может быть установлен или очищен во время выполнения.
Когда пользователь нажимает событие OnClick, все элементы управления подтверждаются со своими собственными поставщиками ошибок.
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;
}
}
Проблема:
Каждый раз, когда функция называется новый объект ErrorProvider создается, который я не хочу. Каждый контроль не должен иметь более 1 поставщика ошибок, и я должен иметь возможность искать его так же, как и в ASP.NET, чтобы искать некоторое управление на странице.
Как я могу это сделать
Решение
В большинстве случаев вам действительно нужен только один экземпляр errorProvider в форме.
Например
ErrorProvider errorProvider1 = new ErrorProvider();
Или просто перетащите один из панели инструментов на форму.
При звонке ErrorProvider вы поставляете контроль и сообщение ,,
errorProvider1.SetError (dateTimePicker1, "HEY BAD DATE");
Чтобы очистить ошибку ...
errorProvider1.SetError (dateTimePicker1, "");
Итак, один экземпляр ErrorProvider - это все, что вам действительно нужно в большинстве ситуаций.
Другие советы
Сделайте по себе и недвижимость и доступа к тому, что свойство каждый раз, когда вам нужен новый 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;
}
}