我把数据从datatable绑定到datagridview,然后想修改后一列计算:
private void OrderDGV_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
try
{
//数量自增
float tsum = Convert.ToSingle(OrderDGV[3, e.RowIndex].Value.ToString()) + Convert.ToSingle(OrderDGV[4, e.RowIndex].Value.ToString());
OrderDGV[5, e.RowIndex].Value = tsum.ToString();
//金额自增
float tmoney = Convert.ToSingle(OrderDGV[5, e.RowIndex].Value.ToString()) * Convert.ToSingle(OrderDGV[6, e.RowIndex].Value.ToString());
OrderDGV[14, e.RowIndex].Value = tmoney.ToString();
}
catch { }
}
但是报错了!
未处理的“System.StackOverflowException”类型的异常出现在 System.Windows.Forms.dll 中。
确保您没有无限循环或无限递归
这是为何?
private void OrderDGV_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
try
{
//数量自增
float tsum = Convert.ToSingle(OrderDGV[3, e.RowIndex].Value.ToString()) + Convert.ToSingle(OrderDGV[4, e.RowIndex].Value.ToString());
OrderDGV[5, e.RowIndex].Value = tsum.ToString();
//金额自增
float tmoney = Convert.ToSingle(OrderDGV[5, e.RowIndex].Value.ToString()) * Convert.ToSingle(OrderDGV[6, e.RowIndex].Value.ToString());
OrderDGV[14, e.RowIndex].Value = tmoney.ToString();
}
catch { }
}
但是报错了!
未处理的“System.StackOverflowException”类型的异常出现在 System.Windows.Forms.dll 中。
确保您没有无限循环或无限递归
这是为何?
里面没写异常
如:
catch(StackOverflowException e)
{
.....
}
catch(Exception ex)
{
....
}
前半句有错,我把tsum用show方法显示出来,没问题,可以计算,这 前半句
OrderDGV[5, e.RowIndex].Value 这个值没有变
DataGridViewTextBoxColumn textColumn =new DataGridViewTextBoxColumn();
textColumn.DataPropertyName = "追加的列";
//名字和Header设定
textColumn.Name = "textColumnadd";
textColumn.HeaderText = "手动追加的列";
//列追加
dataGridView1.Columns.Add(textColumn);
if (e.ColumnIndex == 3 || e.ColumnIndex == 4)
{
if (e.RowIndex == -1)
{
return;
}
else
{
float tsum = Convert.ToSingle(OrderDGV[3, e.RowIndex].Value.ToString()) + Convert.ToSingle(OrderDGV[4, e.RowIndex].Value.ToString());
this.OrderDGV[5, e.RowIndex].Value = tsum.ToString();
}
}
这样就OK 了!泪流满面!