2016-04-27 3 views
0

У меня есть много текстовых полей, с которыми я выполняю различные проверки, и в какой-то момент мне просто нужно удалить errorProvider, если код достигает этого оператора if. То, что я сделал в этом:Возможно ли узнать, на какой элемент управления отображается ErrorProvider?

if (errorProviderSame1.DataSource.ToString() != null && errorProviderSame2.DataSource.ToString() != null) 
    { 

    if (errorProviderSame2.DataSource.ToString() == textBoxSvrcAtual.Name) 
     errorProviderSame2.Dispose(); 
    if (errorProviderSame1.DataSource.ToString() == textBoxSvrcAtual.Name) 
     errorProviderSame1.Dispose(); 

    } 

Примечание: Я бегу все валидаций в тексте изменены события и «textBoxSvrcAtual» является имя TextBox я по сравнению с errorProvide DataSource

ответ

0

Dispose не удаляет объект. Фактическое удаление выполняется автоматически с помощью сборщика мусора, если нет никакой переменной, ссылающейся на объект.

Dispose предназначен, чтобы сделать некоторые очистки преждевременно фактическим удаление объекта (е. Г. Высвобождая неуправляемую память, закрытие дескрипторов файлов или сокеты, ...), см MSDN documentation и tutorial.

Чтобы действительно устранить ошибку поставщика (в точке где-то в будущем), вы должны установить все ссылки на нуль (или другой ErrorProvider).

В любом случае (путем удаления или путем установки на нуль), вы не сможете надлежащим образом использовать провайдера после этого –, и если вам по-прежнему нужен поставщик ошибок для будущей проверки, вам придется заменить его на новый экземпляр. Я могу себе представить, что на самом деле это не то, что вы намеревались, возможно, вам лучше всего очистить ошибку (используя SetError с пустой строкой).

Внимание: «DataSource - это источник данных, который вы можете подключить к элементу управления, и что вы хотите отслеживать ошибки. DataSource может быть настроен на любую коллекцию, которая реализует IList». (см. MSDN). Таким образом, вы не получите то, что ожидаете.

Вы можете вместо этого установить свойство Tag в текстовое поле и сравнить ep.Tag == tb (нет toString, нет имени, просто ссылки).

 Смежные вопросы

  • Нет связанных вопросов^_^