您可能经常需要检查用户输入到 Windows 窗体中的信息是否有效。

例如,如果您有一个电话号码的 TextBox 控件,则可以检查该控件是否只包含适当的字符(数字、括号和连字符等等)。

通常,可使用正则表达式验证用户输入的数据。

了解Validating之前,我们还需要了解焦点事件的顺序:

焦点事件按下列顺序发生:
 Enter //进入控件时发生
GotFocus //在控件接收焦点时发生
Leave //输入焦点离开控件时发生
Validating //控件数据效验时发生
Validated //数据效验完成后发生
LostFocus //失去焦点时发生如果
CausesValidation 属性设置为 false,则将取消 Validating 和 Validated 事件。
 注:GotFocus 和 LostFocus 事件是关联于 WM_KILLFOCUS 和 WM_SETFOCUS Windows 消息的低级别焦点事件。
应对所有控件使用 Enter 和 Leave 事件。

如果在 Validating 事件委托中,CancelEventArgs 对象的 Cancel 属性设置为 true,则正常情况下将在 Validating 事件之后发生的所有事件均被取消。

在操作中验证 要验证控件的内容,可以编写代码来处理 Validating 事件。在事件处理程序中,测试特定的条件(例如上面的电话号码)。验证是在处理时发生的一系列事件之一。

如果测试失败,则 Validating 事件的CancelEventArgs 的Cancel 属性将设置为 True。

这将取消 Validating 事件,并导致焦点返回到控件(juky_huang注:这样会出现一个死循环,除非数据效验通过,可以使用下面强制方法来关闭)。

实际的结果是,除非数据有效,否则用户将无法退出该控件。

关闭窗体和重写验证 当数据无效时,维护焦点的控件的副作用是,使用关闭窗体的任何常规方法都将无法关闭父窗体:

单击“关闭”框 通过右击标题栏显示的“系统”菜单 以编程方式调用 Close 方法不过

,在某些情况下,无论控件中的值是否有效,您都希望用户可以关闭窗体。您可以重写验证,并通过创建窗体的Closing 事件的处理程序来关闭仍包含无效数据的窗体。

在该事件中,将 Cancel 属性设置为 False。这将强制关闭该窗体。

注意如果使用此方法强制关闭窗体,控件中尚未保存的任何信息都将丢失。 注意模式窗体在关闭时不会验证控件内容。

您仍可以使用控件验证将焦点锁定到控件,但不必考虑关闭窗体的行为。

Validating事件是在用户改变某个控件的某项值时激发的,比如改变TextBox的Text。

通常,要激发Validating需要设 CausesValidation属性为true

。 你可以在Validating事件里面检查改变的值是否合法。例如你规定TextBox的Text只能输入ABC三个字母中的某一个或几个,当用户输入或改变时就会激发Validating事件,你可以在 Validating事件的委托里面检查TextBox.Text是不是仅仅由ABC三个字母中的某一个或几个构成。如果是,可以什么都不做就退出该过程;如果不是,你只要执行这一句: e.Cancel = True 就可以取消操作

Validating相关推荐

  1. validating和validated的区别

    validating事件发生的时候,值还没有被真正存入,所以是空的,而validated事件发生的时候,值已经存入,所以能取出:一个相当于值的前因,一个相当于值的后果.也就是说,可以用validati ...

  2. [INS-08109] Unexpected error occurred while validating inputs at state 'getOCMDetails'.

    在ORACLE11G R2 安装ORACLE时出现以下错误: [INS-08109] Unexpected error occurred while validating inputs at stat ...

  3. Eclipse Validating减少不必要的验证

    Eclipse Validating Eclipse Validatig一直在更新耗费更长的时间和精力怎么办? 打开 >eclipse>>[window]>>>[p ...

  4. Eclipse取消Process Validating

    最近用Eclipse学Spring框架修改一点就一直validating,要等好久.可以让它取消验证,如下: Window-Preferences 搜索validation 把这一列的勾全部取消 然后 ...

  5. An internal error occurred during: Validating ***.

    ERROR:An internal error occurred during: "Validating ***". Eclipse启动报错 An internal error o ...

  6. sublime3 一直用的好好,sftp同步文件时忽然提示encoding error,Validating remote folder “/var” failure (Encoding error)

    sublime3 一直用的好好,sftp同步文件时忽然提示encoding error,Validating remote folder "/var/XX"... failure ...

  7. 亲测解决INFO Validating config

    INFO Validating configFATAL YAMLException: duplicated mapping key at line 859, column -321: model: 把 ...

  8. Hibernate Validator 6.0.13 声明和验证方法约束(Declaring and validating method constraints)

    播放地址 13.解读Hibernate-Validator官方文档- 方法参数校验API http://v.youku.com/v_show/id_XMzk1Njg2Njg5Mg==.html 3. ...

  9. DataGridView的Validating事件注册后删除操作的处理

    我们在处理DataGridView必填项判断时,一般使用DataGridView的RowValidating事件判断,具体代码如下: protected override void OnRowVali ...

  10. Eclipse使用时遇到一直在Validating中的解决办法

    第一次从服务器检出大型web项目时出现了validating中,一直卡死不动,因此百度查找了很多说法和解决方案,先总结如下: 一.什么是Eclipse的Validating? Eclipse安装之后一 ...

最新文章

  1. 输入今天是星期几的序号,给今天和昨天赋予枚举值,并输出昨天是星期几的枚举值
  2. 打印http地址打印双斜杠
  3. Linux 操作系统原理 — I/O 系统
  4. golang 编译运行出错:imported and not used: log
  5. maven java jar_在maven中引入本地jar包的方法
  6. VC++在两个按钮之间连直线和折线
  7. c# 基于layui的通用后台管理系统_【SpringBoot】三十三、SpringBoot+LayUI后台管理系统开发脚手架...
  8. 最好用的koa2+mysql的RESTful API脚手架,mvc架构,支持node调试,pm2部署。
  9. UltraGrid中实现下拉Grid(UltraDropDown)
  10. 两道二分coming~
  11. android网页接口实现方法,Android 程序员搞 web 之 webApi (十 四)
  12. 3月28日晚中央电视台出现重大故障?!
  13. SqlCacheDependency 实现数据缓存
  14. Java 中override、overload、overwrite区别,以及与多态的关系
  15. android零基础教程,Android零基础入门|Activity初入门,创建和配置如此简单
  16. Java8新特性DateTime使用
  17. python合并两个txt列_python如何将两个txt文件内容合并
  18. OpenJudge NOI题库 入门 116题 (一)
  19. php获取当前进程的id
  20. windows 许可证即将过期,解决方案

热门文章

  1. android--mediaplayer的seekTo用法
  2. Linux上一键安装docker
  3. Python:教你如何实现多线程下载器
  4. 经典重读 | 用高斯牛顿的方法来进行IKF的更新步骤
  5. GlobeCOM 2020 中稿
  6. Python 字典(Dictionary)day11
  7. 计算机视觉系列-业界动态-AI快车道-PaddleOCR最新进展
  8. vue.js用benz-amr-recorder实现播放amr格式音频
  9. zzulioj 1205: 你爱我么?
  10. 石家庄计算机中专类学校有哪些专业,石家庄中专学校都有哪些