Перечислить ошибки в поставщике ошибок
-
03-07-2019 - |
Вопрос
Можно ли перечислить все текущие ошибки, отображаемые через «Поставщик ошибок», без доступа к элементам управления?
Решение
Существует сводный валидатор, который выдаст вам все ошибки, но он довольно уродлив, и я не уверен, что вы сможете использовать его, не отображая на странице.Технически, если вы все делаете «правильно», вся обработка ошибок должна выполняться в вашем среднем сегменте, а затем таким образом выводиться на экран, чтобы у вас уже был доступ ко всем ошибкам в коллекции или словаре.
Другие советы
Вы можете получить все ошибки от ErrorProvider, перечислив коллекцию Controls его родительского элемента и вызвав GetError для каждой из них.Не эффективно, но работает.
foreach (Control ctrl in errProv.ContainerControl.Controls)
{
Console.WriteLine(errProv.GetError(ctrl));
}
Для всех людей .net WinForms, которые найдут это в Google и т. д.
В WinForms невозможно, по крайней мере, перечислить все текущие ошибки, отображаемые через класс «Поставщик ошибок», без доступа ко всем элементам управления, в WinForms нет даже сводного валидатора.
Однако, если ваши ошибки возникают на нижнем уровне, вы все равно должны где-то иметь доступ к их коллекции, как указывает на плакате Чарльза Грэма.
В WinForms, если ваше приложение достаточно простое и не имеет четко определенных «слоев», вы можете обернуть ErrorProvider в класс, который записывает и предоставляет все текущие ошибки.Или, если приложение действительно очень простое, создайте вспомогательный метод, который записывает/удаляет ошибку и обновляет ErrorProvider.