WinForm中DataGridView验证单元格输入的是数字

     事件:DataGridView验证单元格输入的是数字,DataGridView源数据是从数据库读取的。

     需求:当用户输入的不是数字的时候需要提示信息(数据是直接绑定数据库的,因此dataGridView有自己的报错功能,我们需要屏蔽掉它,显示自己的错误提示!)

     实现: 选择DataGridView的CellValidating事件

      (1)  验证整数:

 1  private void gridPlant_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
 2         {
 3             if (e.RowIndex > -1 && e.ColumnIndex > -1)
 4             {
 5                 DataGridView grid = (DataGridView)sender;
 6                 grid.Rows[e.RowIndex].ErrorText = "";
 7                //这里最好用列名,而不是列索引号做判断
 8                 if (grid.Columns[e.ColumnIndex].Name == "WO0011_NUMBER_IDLE" || grid.Columns[e.ColumnIndex].Name == "WO0011_NUMBER_WORKING" || grid.Columns[e.ColumnIndex].Name == "WO0011_NUMBER_ON_SITE")
 9                 {
10 
11                     Int32 newInteger = 0;
12                     if (!int.TryParse(e.FormattedValue.ToString(), out newInteger))
13                     {
14                         e.Cancel = true;
15                         grid.Rows[e.RowIndex].ErrorText = "Please enter a int number!";
16                         MessageBox.Show("the value is not nubmer , Pleaser enter a int number !");
17                         return;
18                     }
19                 }
20             }
21         }

     (2) 验证十进制数:

 1  private void gridBriefsOlder_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
 2         {
 3             if (e.RowIndex > -1 && e.ColumnIndex > -1)
 4             {
 5                 DataGridView grid = (DataGridView)sender;
 6                 grid.Rows[e.RowIndex].ErrorText = "";
 7 
 8                 if (grid.Columns[e.ColumnIndex].Name == "WO0009_APPROXIMATE_COMPLETION_PERCENTAGE1")
 9                 {
10                     try
11                     {
12                         Convert.ToDecimal(e.FormattedValue);
13                     }
14                     catch
15                     {
16                         e.Cancel = true;
17                         grid.Rows[e.RowIndex].ErrorText = "Please enter a number!";
18                         MessageBox.Show("the value is not nubmer , Pleaser enter a  number !");
19                         return;
20                     }
21                 }
22             }
23         }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码农分享

C# 日期格式化常用

(1)、CultureInfo使整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文化,这样当然满足处于不同地区和文化的用户。但前...

58820
来自专栏魏琼东

本人为巨杉数据库(开源NoSQL)写的C#驱动,支持Linq,全部开源,已提交github

     这些年在做AgileEAS.NET SOA 中间件平台的推广、技术咨询服务过程之中,特别是针对我们最熟悉的医疗行业应用之中,针对大数据分析,大并发性能...

11500
来自专栏草根专栏

设计模式学习(二): 观察者模式 (C#)

《深入浅出设计模式》学习笔记第二章 需求: 开发一套气象监测应用,如图: ? 气象站,目前有三种装置,温度、湿度和气压感应装置。 WeatherData对象追踪...

34150
来自专栏.NET开发那点事

.NET开源高性能Socket通信中间件Helios介绍及演示

  Helios是一套高性能的Socket通信中间件,使用C#编写。Helios的开发受到Netty的启发,使用非阻塞的事件驱动模型架构来实现高并发高吞吐量。H...

23820
来自专栏跟着阿笨一起玩NET

关于asp.net与winform导出excel的代码

一、asp.net中导出Execl的方法: 在asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在...

12010
来自专栏菩提树下的杨过

msmq发送速度的测试

在一些并发量比较高的"中小型"应用中,如果短期内有大量的数据插入,利用msmq中转是一个不错的选择(petshop就是这么干的),想知道msmq一秒钟内到底能...

25790
来自专栏张善友的专栏

Mono 3.2 测试NPinyin 中文转换拼音代码

C#中文转换为拼音NPinyin代码  在Mono 3.2下运行正常,Spacebuilder 有使用到NPinyin组件,代码兼容性没有问题。 using S...

21670
来自专栏Porschev[钟慰]的专栏

前台JS(Jquery)调用后台方法 无刷新级联菜单示例

前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 CasMenu.aspx页面: <%@ Page Language="C#" AutoEventW...

35950
来自专栏个人随笔

体检套餐管理系统 -- Dictionary<K,V>双列集合

本文章为 Dictionary<K,V>双列集合开发项目,如需要List<T>单列集合开发的此项目,请到楼主博客园寻找 博客网址:http://www.cnbl...

30250
来自专栏游戏杂谈

Unity项目中文字的统一管理

一款游戏在研发初期就需要考虑多语言的问题,否则后期在进行多国语言版本时就面临着巨大的成本。鉴于之前页游的经验,其它同事设计出读取Excel的方式来管理所有的文字...

14210

扫码关注云+社区

领取腾讯云代金券