datagridview 限制某列能输入正整數,还能输入小数

37 篇文章 1 订阅
1 篇文章 0 订阅
方法一:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    e.CellStyle.BackColor = Color.Aquamarine;//设置编译时的颜色
    TextBox control = (TextBox)((DataGridView)sender).CurrentCell.DataGridView.EditingControl;
    if (((DataGridView)sender).CurrentCell.ColumnIndex == 2 || ((DataGridView)sender).CurrentCell.ColumnIndex == 3) //第2,3行只能输入正整数,小数
    {
        control.KeyPress += new KeyPressEventHandler(cotrol_KeyPress);//用自定义函数来判断
    }
}
private void cotrol_KeyPress(object sender, KeyPressEventArgs e)//自定义函数
{
    //验证正整数,小数
    if (e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46 && !char.IsNumber(e.KeyChar)) e.Handled = true;
    int a = 0;
    try
    {
        a = ((DataGridViewTextBoxEditingControl)sender).Text.ToString().Trim().Split('.').Length;
    }
    catch { }
    if (e.KeyChar == 46 && a > 1) e.Handled = true;
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    //验证日期格式
    DateTime dtime;
    if (e.ColumnIndex == 4)
    {
        if (DateTime.TryParse(dataGridView1.CurrentCell.Value.ToString().Trim(),out dtime))
        {
            //dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty;//如果改正错误,取消行提示
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = string.Empty;//如果改正错误,取消单元格提示
        }
        else
        {
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "输入内容不符合规范!";
            dataGridView1.CancelEdit();
        }
    }

}

 

方法二:(datagridview取消编辑时,会报错)
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    if (dataGridView1.Rows[e.RowIndex].IsNewRow) return;
    decimal dci;
    if (e.ColumnIndex == 4)
    {
        if (e.FormattedValue != null && e.FormattedValue.ToString().Length > 0)
        {
            if (!decimal.TryParse(e.FormattedValue.ToString(), out dci) || dci < 0)
            {
                e.Cancel = true;
                MessageBox.Show("请输入数字或小数", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值