Перечислять ошибки в поставщике ошибок - PullRequest
2 голосов
/ 01 октября 2008

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

Ответы [ 4 ]

4 голосов
/ 19 февраля 2010

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

foreach (Control ctrl in errProv.ContainerControl.Controls)
{
    Console.WriteLine(errProv.GetError(ctrl));
}
2 голосов
/ 28 октября 2008

Для всех пользователей .net WinForms, которые находят это в Google и т. Д. *

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

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

2 голосов
/ 02 октября 2009

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

1 голос
/ 01 октября 2008

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

...