Вопрос

Можно ли перечислить все текущие ошибки, отображаемые через «Поставщик ошибок», без доступа к элементам управления?

Это было полезно?

Решение

Существует сводный валидатор, который выдаст вам все ошибки, но он довольно уродлив, и я не уверен, что вы сможете использовать его, не отображая на странице.Технически, если вы все делаете «правильно», вся обработка ошибок должна выполняться в вашем среднем сегменте, а затем таким образом выводиться на экран, чтобы у вас уже был доступ ко всем ошибкам в коллекции или словаре.

Другие советы

Вы можете получить все ошибки от ErrorProvider, перечислив коллекцию Controls его родительского элемента и вызвав GetError для каждой из них.Не эффективно, но работает.

foreach (Control ctrl in errProv.ContainerControl.Controls)
{
    Console.WriteLine(errProv.GetError(ctrl));
}

Для всех людей .net WinForms, которые найдут это в Google и т. д.

В WinForms невозможно, по крайней мере, перечислить все текущие ошибки, отображаемые через класс «Поставщик ошибок», без доступа ко всем элементам управления, в WinForms нет даже сводного валидатора.

Однако, если ваши ошибки возникают на нижнем уровне, вы все равно должны где-то иметь доступ к их коллекции, как указывает на плакате Чарльза Грэма.

В WinForms, если ваше приложение достаточно простое и не имеет четко определенных «слоев», вы можете обернуть ErrorProvider в класс, который записывает и предоставляет все текущие ошибки.Или, если приложение действительно очень простое, создайте вспомогательный метод, который записывает/удаляет ошибку и обновляет ErrorProvider.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top