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

转载:http://www.cnblogs.com/ganqiyin/archive/2013/02/18/2915491.html

事件: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         }

//=>不设置CausesValidation话,则datagridview中CellValidating中出现无限循环了。
this.dgvRecyclePackage.CausesValidation = false;
这样就可以了。

时间: 2024-10-17 20:47:04

WinForm中DataGridView验证单元格输入的是数字的相关文章

如何实时获取DBGrid 中当前单元格输入的内容?

如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理, 用什么事件呢? 所以Field的Onchange事件是没用的. 这个问题简单啊,每输入1个数据的后就提交(并不是提交到数据库,还是在编辑状态),那么用DataSet就可以取值了 用DBGrid的KeyUp事件: procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;   Shift: TShiftState); beg

(很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]

如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理,用什么事件呢? 所以Field的Onchange事件是没用的. DBGrid1.SelectedField.AsStringDBGrid1.SelectedField.Text看你需要选择 这个问题简单啊,每输入1个数据的后就提交(并不是提交到数据库,还是在编辑状态),那么用DataSet就可以取值了用DBGrid的KeyUp事件: procedure TForm1.DBGrid1Key

C# Winform中DataGridView的DataGridViewCheckBoxColumn使用方法

下面介绍Winform中DataGridView的DataGridViewCheckBoxColumn使用方法: DataGridViewCheckBoxColumn CheckBox是否选中 在判断DataGridView中CheckBox选中列的时候,用DataGridViewRow.Cells[0].FormattedValue.ToString()=="True"语句时存在问题,当我们直接点击CheckBox时,结果显示未选中,但是如果我们在点击其他单元格时,结果显示选中.而用

C#winform中DataGridView常用的属性

1.AllowUserToAddRows属性:指示是否向用户显示添加行的选项 AllowUserToOrderColumns属性:指示是否允许通过手动对列重新定位 AllowUserToResizeColumns属性:指示用户是否可以调整列的大小 AllowUserToResizeRows属性:指示用户是否可以调整行的大小 2.ColumnHeadersVisible属性:指示是否显示列标题行    RowHeadersVisible属性:指示是否显示包含行标题的列 3.ReadOnly属性:指

iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建

一.实现效果 说明:该示例在storyboard中使用动态单元格来完成. 二.实现 1.项目文件结构和plist文件 2.实现过程以及代码 在tableview的属性选择器中选择动态单元格. 说明:在storyboard中直接使用其自带的动态单元格完成tableviewcell的定义,并创建了一个管理该cell的类,进行了连线. 实现代码: 数据模型部分: YYappInfo.h文件 1 // 2 // YYappInfo.h 3 // 01-使用动态单元格来完成app应用程序管理界面的搭建 4

javascript如何便利表格中的行和单元格

javascript如何便利表格中的行和单元格:尽管现在普遍使用div布局来替代表格,这并不说明table是一无是处的,在制作表格类型的结构的时候还是使用table更为有效.在实际应用中有时候需要便利表格中的行和单元格,下面就通过实例简单介绍一下如何实现此功能.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author&quo

C# 获取Excel中的合并单元格

C# 获取Excel中的合并单元格 我们在制作表格时,有时经常需要合并及取消合并一些单元格.在取消合并单元格时需要逐个查找及取消,比较麻烦.这里分享一个简单的方法来识别Excel中的合并单元格,识别这些合并单元格之后对这些单元格进行取消合并操作,还可以进行其他操作如设置格式等. 为了展示,这里我使用了一个模板Excel文件,它含有两个合并区域,如下图: 代码使用: 步骤1:实例化一个Workbook对象并加载Excel文档. Workbook workbook = new Workbook();

winform的datagridview单元格输入限制

在datagridview的EditingControlShowing事件里面添加代码: if (this.dgv_pch.Columns[dgv_pch.CurrentCell.ColumnIndex].HeaderText == "批内序号")//判断是哪列的单元格需要限制 { (dgv_pch.Columns[dgv_pch.CurrentCell.ColumnIndex] as DataGridViewTextBoxColumn).MaxInputLength = 4;//限制

C# DataGridView中指定的单元格不能编辑

ReadOnly属性的使用 DataGridView内所有的单元格不能编辑 当DataGridView.ReadOnly属性设定为True时, DataGridView内所有的单元格不能编辑. 但是使用这种方法可以对行进行删除.而且最下面的一行被表示,但不能输入. [c-sharp] view plaincopyprint? // DataGridView1的单元格只读 DataGridView1.ReadOnly = true; 只有被指定的列.行.单元格不能编辑 只有被指定的列.行.单元格不