validating事件发生的时候,值还没有被真正存入,所以是空的,而validated事件发生的时候,值已经存入,所以能取出;一个相当于值的前因,一个相当于值的后果。也就是说,可以用validating事件在值存入之前检验某个先决条件,如果不满足,那么取消之前的操作,用e.cancel;如果要检验值本身的合法性,那么就用validated事件在值存入之后得到该字段的值。这也是为什么validated事件的e参数没有cancel的原因,因为这个时候值已经存入,动作已经完成,无法取消。

另外还有一点,不管是validating还是validated,事件发生的时候控件都没有失去焦点,所以才能谈得上对该控件进行操作。控件的事件发生顺序为Enter、GotFocus、Leave、Validating、Validated、LoseFocus,也就是说程序焦点先“进入”控件,然后控件“得到焦点”,然后焦点“离开”控件,这个时候焦点在控件内干的事情还没有存入,于是“校验”,然后存入,存入完了发生“校验完”事件,善后处理完毕后控件就“失去焦点”。

您可能经常需要检查用户输入到 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 就可以取消操作

转载于:https://www.cnblogs.com/fujinliang/archive/2012/07/12/2588250.html

validating和validated的区别相关推荐

  1. C# TextBox中的Validating与Validated事件

    转自:http://www.cnblogs.com/limingluzhu/archive/2011/11/09/2243695.html validating事件发生的时候,值还没有被真正存入,所以 ...

  2. 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》

    文章目录 一.常用注解@NotEmpty,@NotBlank,@NotNull介绍 二.@Valid与@Validated的使用与区别 2.1@Valid与@Validated区别: 2.2嵌套验证 ...

  3. 一文探知@Valid和@Validated 的区别

    使用spring boot开发的道友们,或许或多或少有用到过这两个注解,那么今天我们就来探查一下这两者的异同. 两者都可以使开发人员写的注解校验规则生效,例如在某一个字段上加上@NotNull.@No ...

  4. 《SpringBoot篇》12.@Valid与@Validated的区别

    陈老老老板 说明:工作了,学习一些新的技术栈,边学习边总结,各位一起加油.需要注意的地方都标红了,还有资源的分享. 一起加油. 1.介绍 说明: 其实@Valid 与 @Validated都是做数据校 ...

  5. winform Control与UserControl的区别

    作为创建控件的起点,有两个类分别用于不同的情况.理解这两个类的结构,有助于确定什么场合应使用哪个类. 1.Control类 Control类包含在System.Windows.Forms名称空间中,其 ...

  6. Validating

    您可能经常需要检查用户输入到 Windows 窗体中的信息是否有效. 例如,如果您有一个电话号码的 TextBox 控件,则可以检查该控件是否只包含适当的字符(数字.括号和连字符等等). 通常,可使用 ...

  7. C#中Validating事件与关闭窗口

    转自https://www.cnblogs.com/rosesmall/p/8512863.html 您可能经常需要检查用户输入到 Windows 窗体中的信息是否有效.例如,如果您有一个电话号码的 ...

  8. WinForm中关于CausesValidation与Validating事件引发的一些发现.

    在MSDN中有一段很明确地说明: 如果 CausesValidation 属性设置为 false,则将取消 Validating 和 Validated 事件.对于诸如"帮助"按钮 ...

  9. TextBox和DataGridView控件的事件发生顺序

    今天在编写代码的时候碰到了控件的验证问题. 命题:在前台的DataGridView中,任意行的单元格都不能为空,也就是说,在编写的过程中,某一行的编辑完成之后,需要验证各单元是否为空. 事件绑定:最开 ...

最新文章

  1. 00后电竞女学霸直博中科院,本科武大王者全国16强,网友:现实版爽文女主角...
  2. 《Adobe InDesign CS5中文版经典教程》—第1课1.7节使用上下文菜单
  3. linux 观察应用使用内存的情况,Linux学习笔记:free和top命令查看系统内存使用情况...
  4. XCode 4.3 不使用新特性 适用低版本的的项目 不是初学者就可以跳过了(转)
  5. LeetCode 795. Number of Subarrays with Bounded Maximum
  6. msf与cs互相传动
  7. kubernetes apiserver认证 1
  8. linux如何查看tomcat端口号,如何在Linux中修改tomcat端口号
  9. 2018,程序员要搭配这40条编程箴言!!!条条都是干货
  10. Spring框架学习---Spring Framework下篇
  11. 计算机组成与系统结构习题
  12. vue实现下载pdf文件
  13. word2013在论文中添加已有的封面
  14. 290万人考研:所有的不平凡,从不认命开始
  15. 转:make cmake和catkin_make的区别
  16. 灰色预测的MATLAB程序
  17. 算法竞赛中计算机1000ms一般能运行的范围
  18. Lambda表达式使用具备条件
  19. 二、详解 DVWA_Reflected反射型XSS
  20. c语言寒假作业答案,寒假作业的答案

热门文章

  1. 干货丨 简述迁移学习在深度学习中的应用
  2. Python 之 matplotlib (十)Image
  3. 喻国明:“元宇宙”背后的未来图景
  4. 下一代汽车的核心竞争力到底是什么?
  5. “重”磅!人造物质量首超全球生物量
  6. 倪光南:看好鸿蒙系统,坚持生态体系创新才能不被“卡脖子”
  7. 天价!一款芯片从设计到流片需要45亿!3纳米芯片研发成本曝光
  8. 浙江将建设超级高速公路,全面支持自动驾驶
  9. 【倒计时19天】腾讯数字生态大会扫除产业数字化的“繁”恼
  10. 对不起,我的代码评审毁了一个程序员!