【问题标题】:What is the best way to do validations in windows forms在 Windows 窗体中进行验证的最佳方法是什么
【发布时间】:2010-12-08 21:28:57
【问题描述】:

在 Windows 窗体应用程序中进行验证的最佳方法是什么?

最简单的方法是什么?

(对最终用户)最有吸引力的方式是什么?

问候,

-苦山-

【问题讨论】:

  • 您可以尝试更具体一点。什么样的数据,什么样的要求等等。不像有一个定义明确的验证方法的列表。

标签: c# winforms validation


【解决方案1】:

关于 UI 验证,我有一组控件验证器,我只需通过分配它们的控件将它们插入我需要它们的地方。您可以使用 ErrorProvider 来显示错误,您所需要的只是封装的框架来实现自动化。

首先是 ValidatorBase 类。使其抽象并继承 Component 类,以便您可以获得设计时支持。在这里存储一个 ErrorProvider 的私有实例,并使用类似模板方法模式的东西(创建一个 Validate 方法,该方法又调用受保护的抽象 DoValidation 方法)。在基类的具体实现中,只需覆盖 DoValidation 并将您的逻辑放在这里。您可以使用 EmptyValidator(检查控件的值是否不为空)、RegexValidator(使用一些 reg. 表达式检查控件值)、GroupValidator(对某个列表中的每个 ValidatorBase 实例进行验证),随心所欲。

在基类中,您可以添加诸如对属性的设计时支持(错误消息、图标、要验证的控件等...)

EDIT1:现在,关于 UI 之外的验证,这是您的业务层的域和您的规则。这些东西也有框架/模式,但我认为您是在询问 UI 验证。

EDIT2:ASP.NET 内置了一组类似的验证器,虽然功能更多(客户端验证等...),但老实说,我不太喜欢它们。

EDIT3:还检查: Is there any validation control available in .net win forms like asp.net web form?

【讨论】:

    【解决方案2】:

    您可能会考虑查看的一个接口是IDataErrorInfo 以及ErrorProvider 类。我有一篇旧博客文章,其中提供了可能有帮助的 DataBinding 类和接口的列表:Data Binding Classes, Interfaces, and Attributes in Windows Forms 2.0

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多