日期:2014-05-18  浏览次数:20926 次

dataGridView1 两列相乘
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
  {
  if (string.IsNullOrEmpty(dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString()) || string.IsNullOrEmpty(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString()))
  return;//没有输入数值时,不要进行计算
  // 总数量=数量*串数
  if (e.ColumnIndex == 4 || e.ColumnIndex == 5)
  {
  try
  {
  dataGridView1.Rows[e.RowIndex].Cells[6].Value = (Convert.ToDecimal(dataGridView1.Rows[e.RowIndex].Cells[4].Value) * Convert.ToDecimal(dataGridView1.Rows[e.RowIndex].Cells[5].Value)).ToString();
  }
  catch (Exception)
  {
  MessageBox.Show("请输入数字");
  }
  }

  }

提示错误:
索引超出范围。必须为非负值并小于集合大小
参数名: index
调试时查看 index的值为-1

已将 AllowUserToAddRows =false;


------解决方案--------------------
C# code

 if (e.RowIndex != -1 && (e.ColumnIndex == 4 || e.ColumnIndex == 5))