验证用户输入/授予.NET控件状态OK或NOK

Mr.*_*ast 4 .net c# winforms

我正在考虑验证用户输入的最佳方法.

让我们设想一些TextBoxes,CheckBoxes或任何你喜欢的.NET控件,其中用户输入必须被验证为OK或NOK.一旦用户填写了他通过按钮提交的所有必填字段.

现在我必须知道哪些字段先前已确认为OK,哪些字段为NOK.到目前为止,我总是通过为每个控件声明一个全局bool变量来处理这种情况.但我不喜欢那样......

我很确定必须有另一种方式!我想要做的是使用名为status或类似的OK或NOK属性扩展这些.NET控件.你能做到吗?如果是这样,你怎么做?这样的东西已经存在吗?

感谢您的答复!

Rez*_*aei 5

您在Windows窗体中有一些有用的工具来执行验证并显示错误消息,包括:

使用以上选项:

  • 您可以在使用数据绑定到模型类时执行验证.
  • 当您不使用数据绑定时,您可以执行验证.
  • 您可以在控件附近显示错误消息和错误图标,这些图标处于无效状态.
  • 您可以决定防止焦点从无效控件更改或让焦点发生变化.
  • 您可以显示表单的验证摘要.

IDataErrorInfo接口

如果您有一些模型类,最适合验证并在Windows窗体中提供错误消息正在实施IDataErrorInfo.它受数据绑定机制和一些Windows窗体控件支持,如DataGridViewErrorProvider.

为了简单起见,您可以在类中编写验证规则并使用IDataErrorInfo属性返回错误消息.即使您想应用更高级的方案(如使用验证引擎),最后也可以实现IDataErrorInfo与寡妇表单最大程度的一致性.

您将使用an ErrorProvider来显示错误消息.它足以将其绑定到您的数据源,并自动显示错误.

验证控件的事件

如果您没有模型类并且所有验证都应该针对控件完成,那么最好的选择是使用Validating控件事件.在那里,您可以设置e.Cancel = true将控制状态设置为无效.然后,您可以防止焦点更改或使用控制状态获取验证摘要.

在这种情况下,您将使用an ErrorProvider来显示错误.以Validating这种方式为控件设置错误就足够了:errorProvider1.SetError(control1, "Some Error")或者您可以设置空错误消息以删除验证错误.

ErrorProvider组件
在两种情况下,当您使用数据绑定或使用Validating事件时,如上所述,ErrorProvider显示和错误图标带有工具提示,在控件附近显示错误消息.(DataGridView使用自己的机制在行和单元格上显示错误,而不使用ErrorProvider.)

您还可以使用该组件使用GetError返回每个控件的错误消息的组件方法获取表单的验证摘要.

ValidateChildren方法和Form的AutoValidate属性

您可以使用ValidateChildren表单方法或容器控件来检查控件是否存在验证错误.

根据AutoValidate表单属性的值,它可以防止焦点更改或让焦点从无效控件更改.