0
private void Remove_Click(object sender, EventArgs e)
    {
       dgvSelected.Rows.Remove(dgvSelected.CurrentRow);
       price = Convert.ToDecimal(Price.Text);
       price -= Convert.ToDecimal(dgvSelected.SelectedCells[3].Value.ToString());
       Price.Text = price.ToString();         
    }

datagridview在该代码中,目的是删除在命名中具有项目名称和价格的选定行,dgvSelected删除后,将删除行的价格减去当前总数。问题是当它来到最后一行并且如果它被删除时,它会出错,说“对象引用未设置为对象的实例”。在“价格 -= Convert.ToDecimal(dgvSelected.SelectedCells[3].Value.ToString());” 部分。

4

3 回答 3

1

在您的代码中,您在从实际价格中降低价格之前删除了该行,因此“对象引用未设置为对象的实例”的例外情况在扣除价格后尝试删除该行。

于 2011-09-09T04:23:23.210 回答
0

在删除该行之前进行数学运算 - 然后它仍然存在。

private void Remove_Click(object sender, EventArgs e)
    {
       price = Convert.ToDecimal(Price.Text);
       price -= Convert.ToDecimal(dgvSelected.SelectedCells[3].Value.ToString());
       Price.Text = price.ToString();         
       dgvSelected.Rows.Remove(dgvSelected.CurrentRow);
    }
于 2011-09-09T04:25:33.433 回答
0

在删除 CurrentRow 之前执行数学运算。最后,当您删除所有行时, CurrentRow 将为空,因此出现异常。

于 2011-09-09T04:26:28.910 回答