博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在 DataGridView 中检验输入的内容为数字类型

Posted on 2007-04-08 09:06  黄田  阅读(752)  评论(0)    收藏  举报

 //1.假设在DataGridView中己有两列,列标题为    X坐标 ,  Y坐标
// CellValidating()事件下面的代码用于检验这两列必须输入数字类型字符,否则出错. IsNumber() 函数为自定义的,
//用于判断字符串是否为数字类型,此函数还可以用其它方法来实现.也可以改变IsNumber()函数来验证输入内容
//不能为空或者只能输入大写或小写......

        private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            if (dGVCoordinate.Columns[e.ColumnIndex].Name == "X坐标" || dGVCoordinate.Columns[e.ColumnIndex].Name == "Y坐标")
            {
                if (isNumber(e.FormattedValue.ToString())==false)
                {
                    dGVCoordinate.Rows[e.RowIndex].ErrorText = "X坐标只能为数字类型!";
                    e.Cancel = true;
                }
            }

            if (dGVCoordinate.Columns[e.ColumnIndex].Name == "Y坐标")
            {
                if (isNumber(e.FormattedValue.ToString()) == false)
                {
                    dGVCoordinate.Rows[e.RowIndex].ErrorText = "Y坐标只能为数字类型!";
                    e.Cancel = true;
                }
            }

        }

//IsNumber() 函数为自定义的,用于判断字符串是否为数字类型,此函数还可以用其它方法来实现.

        private bool isNumber(string s)
        {
            int Flag = 0;
            char[] str = s.ToCharArray();
            for (int i = 0; i < str.Length; i++)
            {
                if (Char.IsNumber(str[i]))
                {
                    Flag++;
                }
                else
                {
                    Flag = -1;
                    break;
                }
            }
            if (Flag > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

//CellEndEdit()事件下代码用到清除错误消息
        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            dGVCoordinate.Rows[e.RowIndex].ErrorText = String.Empty;
        }