您可能经常需要检查用户输入到 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. Linux软件包管理基本操作入门
  2. java 注解 id_java注解
  3. AI识虫:林业病虫害数据集和数据预处理方法
  4. 数据结构复习笔记(2)
  5. Oracle 11g Dataguard搭建及知识梳理
  6. springmvc流程_基于Spring MVC框架的Http流程分析
  7. Seata术语_以及工作原理---微服务升级_SpringCloud Alibaba工作笔记0057
  8. Windows中的ping命令
  9. 自动化和半自动矢量化提取地物矢量轮廓
  10. 放大镜拾色器vue+typescript+canvas
  11. 二元logistic回归、ROC曲线及cutoff值
  12. 犬心犬意 - 狗为什么会趴在地板上睡觉,不怕着凉吗?活久见
  13. Excel设置下拉选项的方法
  14. Linux 下谨慎使用 rm,避免从删库到跑路的悲剧发生
  15. 科技云报道:数字化技术,正在改写企业出海的游戏规则
  16. 【序列化类Serializer】
  17. Beyond Compare(文件对比工具)使用技巧
  18. mahout itemCF 简单使用
  19. OCX控件开发及WEB Javascript如何使用OCX控件
  20. 第五章: 用角色合成可重用Ansible内容

热门文章

  1. SecureCRT 7序列号
  2. centos7上配置开源镜像站之网易
  3. 计算机科学家姚明智简介,逸名网名人大全:姚期智简介,姚期智的照片资料
  4. C++ TGP 模板基础知识--01函数模板
  5. Android Https网络连接失败,图片加载不出
  6. FLV Video解析
  7. [C++][QT]俄罗斯方块
  8. codevs 5462 HYY迎亲I
  9. python毕业设计作品基于django框架外卖点餐系统毕设成品(4)开题报告
  10. 递归方法:斐波那契数列