在Windows应用程序开发中,我们可以通过处理输入控件(如TextBox控件)的Validating事件,对用户的输入进行有效性验证,当用户输入不正确时,可以使用错误提示控件ErrorProvider提示用户输入错误,直至用户输入正确。如:
private void textBox1_Validating(object sender, CancelEventArgs e)
{
  try
  {
    int.Parse(textBox1.Text);
  }
  catch (Exception ex)
  {
    e.Cancel = true; // 验证没有通过
    errorProvider1.SetError(textBox1, ex.Message);
  }
}

private void textBox1_Validated(object sender, EventArgs e)
{
  errorProvider1.SetError(textBox1, "");
}
如果用户的输入验证未通过,想关闭窗体。这时会发现,无法关闭窗体。
发生这种情况的原因是,当输入焦点已经在这个输入控件时,如果你去点取消或关闭按钮,会使得该控件失去焦点,从而引发该控件的Validating事件。由于CancelEventArgs的Cancel属性为true, 所以焦点始终无法离开,无法关闭这个窗体了。
我们可以改用控件的Leave事件来进行验证。
private void textBox1_Leave(object sender, EventArgs e)
{
  try
  {
    int.Parse(textBox1.Text);
  }
  catch (Exception ex)
  {
    textBox1.Focus();
    errorProvider1.SetError(textBox1, ex.Message);
  }
}
private void textBox1_Validated(object sender, EventArgs e)
{
  errorProvider1.SetError(textBox1, "");
}

ErrorProvider控件使用的更多相关文章

  1. Winform ErrorProvider控件使用

    要实现的功能:判断第一个文本框中输入的是不是字符 “a”. 最终效果: *当输入的不是a,控件旁会显示错误图标.当输入的是a,则错误图标会消失. 首先添加ErrorProvider控件. 代码: pr ...

  2. 错误提示控件errorProvider

    http://www.cnblogs.com/suguoqiang/archive/2012/07/17/2596564.html 错误提示控件errorProvider VS显示: 核心代码: th ...

  3. C#的winform控件命名规范

    注:这里用红字标记的部分表示有重复出现,括号内为替代表示方案 1.标准控件 序号 控件类型简写 控件类型 1 btn Button 2 chk CheckBox 3 ckl CheckedListBo ...

  4. ASP.NET 控件前缀命名规范

    标准控件 1  btn Button 2  chk CheckBox 3  ckl CheckedListBox 4  cmb ComboBox 5  dtp DateTimePicker 6  lb ...

  5. (转)WPF控件开源资源

    (转)WPF控件开源资源 Textbox Drag/Drop in WPFhttp://www.codeproject.com/Articles/42696/Textbox-Drag-Drop-in- ...

  6. C#winfrom控件命名规范

     ※用红字标记的部分表示有重复出现,括号内为替代表示方案 1.标准控件 序号 控件类型简写 控件类型 1 btn Button 2 chk CheckBox 3 ckl CheckedListBox ...

  7. C# 控件缩写大全+命名规范+示例

    如有转载,请注明出处:http://www.cnblogs.com/flydoos/archive/2011/08/29/2158903.html C# 控件缩写大全+命名规范+示例 写程序的时候突然 ...

  8. C#控件前缀命名规范

    标准控件 1  btn Button 2  chk CheckBox 3  ckl CheckedListBox 4  cmb ComboBox 5  dtp DateTimePicker 6  lb ...

  9. WinForm控件使用文章收藏整理完成

    对C# WinForm开发系列收集的控件使用方面进行整理, 加入了一些文章, 不断补充充实, 完善这方面. 基础 - 常用控件 C# WinForm开发系列 - CheckBox/Button/Lab ...

随机推荐

  1. [LeetCode] Paint House I & II

    Paint House There are a row of n houses, each house can be painted with one of the three colors: red ...

  2. opencv之haar特征+AdaBoos分类器算法流程(三)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  3. 每日英语:Welcome to the Global Middle-Class Surge

    The mass uprisings this summer in Egypt, Turkey and Brazil are powerful reminders that the middle cl ...

  4. python(50):python 向上取整 ceil 向下取整 floor 四舍五入 round

    取整:ceil 向下取整:floor 四舍五入:round 使用如下:

  5. 碰撞器与触发器[Unity]

    请看原帖,移步:Unity3d碰撞检测中碰撞器与触发器的区别 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加 ...

  6. 解密OpenTSDB的表存储优化【转】

    https://yq.aliyun.com/articles/54785 摘要: 本篇文章会详细讲解OpenTSDB的表结构设计,在理解它的表结构设计的同时,分析其采取该设计的深层次原因以及优缺点.它 ...

  7. Linux环境系搭建Git服务器过程全纪录

    Last :: from 139.199.180.186 [root@VM_219_131_centos ~]# yum install curl-devel expat-devel gettext- ...

  8. 【机器学习】K-means聚类算法与EM算法

    初始目的 将样本分成K个类,其实说白了就是求一个样本例的隐含类别y,然后利用隐含类别将x归类.由于我们事先不知道类别y,那么我们首先可以对每个样例假定一个y吧,但是怎么知道假定的对不对呢?怎样评价假定 ...

  9. Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本

    [本文出自天外归云的博客园] 网上搜,东拼西凑,组装了一个可以查Linux服务器CPU使用率.内存使用率.磁盘空间占用率.负载情况的python脚本. 脚本内容如下: # -*- coding:utf ...

  10. nginx动态配置及服务发现那些事

    Reference: http://xiaorui.cc/2016/10/16/nginx%E5%8A%A8%E6%80%81%E9%85%8D%E7%BD%AE%E5%8F%8A%E6%9C%8D% ...