主要是应用DataGridView的EditingControlShowing事件。当单元格进入编辑模式时,可以处理执行该编辑控件的自定义初始化的此事件。

public DataGridViewTextBoxEditingControl dgvTxt = null; // 声明 一个 CellEdit   

        private void dgv2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
dgvTxt = (DataGridViewTextBoxEditingControl)e.Control; // 赋值
dgvTxt.SelectAll();
dgvTxt.KeyPress += Cells_KeyPress; // 绑定到事件
} // 自定义事件KeyPress事件
private void Cells_KeyPress(object sender, KeyPressEventArgs e)
{
Kzjgsl.keyPressXS(e, dgvTxt);
}

  

public static void keyPressXS(KeyPressEventArgs e, DataGridViewTextBoxEditingControl dgvTxt)
{
if (char.IsNumber(e.KeyChar) || e.KeyChar == '.' || e.KeyChar == (char)Keys.Back)
{
e.Handled = false; //让操作生效
int j = 0;
int k = 0;
bool flag = false;
if (dgvTxt.Text.Length == 0)
{
if (e.KeyChar == '.')
{
e.Handled = true; //让操作失效
}
}
for (int i = 0; i < dgvTxt.Text.Length; i++)
{
if (dgvTxt.Text[i] == '.')
{
j++;
flag = true;
}
if (flag)
{
if (char.IsNumber(dgvTxt.Text[i]) && e.KeyChar != (char)Keys.Back)
{
k++;
}
}
if (j >= 1)
{
if (e.KeyChar == '.')
{
e.Handled = true; //让操作失效
}
}
if (k == 2)
{
if (char.IsNumber(dgvTxt.Text[i]) && e.KeyChar != (char)Keys.Back)
{
if (dgvTxt.Text.Length - dgvTxt.SelectionStart < 3)
{
if (dgvTxt.SelectedText != dgvTxt.Text)
{
e.Handled = true; ////让操作失效
}
}
}
}
}
}
else
{
e.Handled = true;
}
}

  

DataGridView的单元格控制只能输入数字的更多相关文章

  1. JS控制只能输入数字并且最多允许小数点两位

    直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  2. JS 控制只能输入数字并且最多允许两位小数点

    <html lang="en"> <head> <meta charset="UTF-8"> <title>JS ...

  3. 使用jquery控制只能输入数字,并且关闭输入法(转)

    控制文本框只能输入数字是一个很常见的需求,比如电话号码的输入.数量的输入等,这时候就需要我们控制文本框只能输入数字.在用js控制之后在英文输入法的状态下去敲击键盘上的非数字键是输不进去的,然而当你转到 ...

  4. DataGridView 列大写、列只能输入数字 分类: DataGridView 2014-12-07 08:40 332人阅读 评论(0) 收藏

    列大写: 说明:调用EditingControlShowing事件 private void dgvGoods_EditingControlShowing(object sender, DataGri ...

  5. jquery -- jquery控制只能输入数字和小数点

    控制文本框只能输入数字是一个很常见的需求,比如电话号码的输入.数量的输入等,这时候就需要我们控制文本框只能输入数字.在用js控制之后在英文输入法的状态下去敲击键盘上的非数字键是输不进去的,然而当你转到 ...

  6. js控制只能输入数字和小数点

    非常好用,代码示例如下: <input  onkeypress = "return event.keyCode>=48&&event.keyCode<=57 ...

  7. js控制只能输入数字和控制小数的位数

    <input class="form130" style="width: 80px;" maxlength="10" id=" ...

  8. js控制只能输入数字

    onkeyup=clearNoNum(this) function clearNoNum(obj) {    obj.value = obj.value.replace(/[^\d.]/g," ...

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

    转载:http://www.cnblogs.com/ganqiyin/archive/2013/02/18/2915491.html 事件:DataGridView验证单元格输入的是数字,DataGr ...

随机推荐

  1. Python装饰器与面向切面编程

    今天来讨论一下装饰器.装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数 ...

  2. HybridTime - Accessible Global Consistency with High Clock Uncertainty

    Amazon's Dynamo [9] and Facebook's Cassandra [13], relax the consistency model,and offer only eventu ...

  3. Python - KMP算法

    def kmp_match(tex, pat): n = len(tex) m = len(pat) tex = '0' + tex pat = '0' + pat pi = [] pi.append ...

  4. java.lang.ClassNotFoundException: springosgi

    该问题困扰多天,终于查到原因. 问题:对webwork源码的修改始终无法加载,osgi总是读取源码中未修改的类 com.opensymphony.webwork.dispatcher.Dispatch ...

  5. phpexcel 读取数据

    最近公司做一个客户导入会员的功能,以前导入都是使用csv格式导入的,但是客户反应问题挺多的,普遍是乱码(由于各种系统各种环境可能引起编码问题).最近想着就把这个导入完全改成excel导入,就研究了下p ...

  6. phpcms 导航栏点击栏目颜色定位方法

    另:一个栏目下面如果没有子栏目,那么它调用的模板就是列表页模板(及list_为前缀的模板):如果一个栏目下面有子栏目,那么它调用的就是栏目首页模板(category_为前缀的模板). 当你这个栏目添加 ...

  7. hbase与mapreduce集成

    一:运行给定的案例 1.获取jar包里的方法 2.运行hbase自带的mapreduce程序 lib/hbase-server-0.98.6-hadoop2.jar 3.具体运行 4.运行一个小方法 ...

  8. angularJS商品购物车案例

    <!DOCTYPE html> <html ng-app="shopping"> <head lang="en"> < ...

  9. MongoDB创建用户

    1.在创建用户之前,我们首先应该启动mongodb的用户验证功能,否则建立用户是没有意义的! 2.使用 //这个123用户拥有test1数据库的数据库管理员权限,拥有test2数据库的读取权限 db. ...

  10. Html / CSS常见问题 解决方案

    解决Safari下input光标过大 input { line-height: normal; } 设置浮层 html, body { /*只有父元素设置宽高为100%子元素设置宽高100%时才能撑满 ...