枚举错误提供程序中的错误
时间:2020-03-06 14:57:48 来源:igfitidea点击:
是否可以枚举通过"错误提供程序"显示的所有当前错误,而无需访问控件?
解决方案
有一个摘要验证器将为我们提供所有错误,但是它很难看,而且我不确定如果不在页面上显示它就可以使用它。从技术上讲,如果我们以"正确的方式"行事,则所有错误处理都应在中间区域进行,然后以这种方式显示在屏幕上,因此我们已经可以访问集合或者词典中的所有错误。
对于任何在Google等中找到此.NET WinForms的人...
在WinForms中,至少无法枚举通过"错误提供程序"类显示的所有当前错误而不访问所有控件,甚至WinForms中甚至没有摘要验证器。
但是,如果错误从较低层冒出来,那么我们应该无论如何都应该在某些地方访问这些错误的集合,正如海报Charles Graham指出的那样。
在WinForms中,如果应用程序足够简单,没有任何定义明确的"图层",则可以将ErrorProvider包装在记录并公开所有当前错误的类中。或者,如果应用程序确实非常简单,则创建一个帮助程序方法来记录/删除错误并更新ErrorProvider。
我们可以通过枚举其父级的Controls集合并在每个上调用GetError来从ErrorProvider中获取所有错误。效率不高,但是行得通。
foreach (Control ctrl in errProv.ContainerControl.Controls) { Console.WriteLine(errProv.GetError(ctrl)); }