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);
}
6 个解决方案
#1
因为你的这个事件是当这个单元格不为焦点的时候才会触发……
#2
那应该怎么实现值的改变呢?(在CellValidating事件触发之后)
#3
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
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;
}
}
}
{
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;
}
}
}
#4
楼上的没有明白我的意思,那些验证啥的我都已经做好了,只是想改变下单元格的值。情况是必须再次点到那个单元格再失去焦点才能改变。我想这样做,验证完后如果单元格的值通过验证,我再改变下它的值,请问该怎么做?
#5
唉,竟然没有高手来回答,悲哀啊!自己解决了问题,必须if(...)
{
//这是验证过程,具体我不再写
}
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);
}
算了,结贴吧!
{
//这是验证过程,具体我不再写
}
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);
}
算了,结贴吧!
#6
哈哈,又学到了FormattedValue这个属性
#1
因为你的这个事件是当这个单元格不为焦点的时候才会触发……
#2
那应该怎么实现值的改变呢?(在CellValidating事件触发之后)
#3
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
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;
}
}
}
{
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;
}
}
}
#4
楼上的没有明白我的意思,那些验证啥的我都已经做好了,只是想改变下单元格的值。情况是必须再次点到那个单元格再失去焦点才能改变。我想这样做,验证完后如果单元格的值通过验证,我再改变下它的值,请问该怎么做?
#5
唉,竟然没有高手来回答,悲哀啊!自己解决了问题,必须if(...)
{
//这是验证过程,具体我不再写
}
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);
}
算了,结贴吧!
{
//这是验证过程,具体我不再写
}
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);
}
算了,结贴吧!
#6
哈哈,又学到了FormattedValue这个属性