在CellValidating事件中我已经对所有想做的验证都写上了,最后验证通过了我想设置下单元格的值,比如用户输入的值是1.0356,我想把单元格的值弄成1.04(就是保留2位小数,注意这个我已经实现了),得到1.04这个串,然后赋值
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1.04,为什么不能改变呢?必须再次点到那个单元格再失去焦点才能改变。下边我把代码贴一下:
if(...)
{
//这是验证过程,具体我不再写
}else
{
//保留csw个小数,并四舍五入
string x = "0.";
for (int i = 0; i < xsw; i++)
{
x += "0";
}
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Convert.ToDouble(e.FormattedValue.ToString()).ToString(x);
}
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1.04,为什么不能改变呢?必须再次点到那个单元格再失去焦点才能改变。下边我把代码贴一下:
if(...)
{
//这是验证过程,具体我不再写
}else
{
//保留csw个小数,并四舍五入
string x = "0.";
for (int i = 0; i < xsw; i++)
{
x += "0";
}
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Convert.ToDouble(e.FormattedValue.ToString()).ToString(x);
}
{
double d= 0.0;
dataGridView1.Rows[e.RowIndex].ErrorText = string.Empty;
if(dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "")
{
if(!double.TryParse(e.FormattedValue.ToString(),out d) )
{
dataGridView1.Rows[e.RowIndex].ErrorText = "输入有误!";
e.Cancel = true;
}
}
}
{
//这是验证过程,具体我不再写
}else
{
e.Cancel = false;//这里必须加,不加的话需要再次聚焦那个单元格然后离开才能改变值
//保留csw个小数,并四舍五入
string x = "0.";
for (int i = 0; i < xsw; i++)
{
x += "0";
}
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Convert.ToDouble(e.FormattedValue.ToString()).ToString(x);
}
算了,结贴吧!