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
的{{1}}中具有商品名称和价格的所选行,并在删除后,将删除的行的价格减去当前总数。问题是,当它到达最后一行并且如果它被删除,则会出现错误,说“对象引用未设置为对象的实例”。在“price - = Convert.ToDecimal(dgvSelected.SelectedCells [3] .Value.ToString());”中一部分。
答案 0 :(得分:1)
在您的代码中,您在从实际价格降低价格之前删除该行,因此“对象引用未设置为对象实例”的例外尝试在扣除价格后删除该行。
答案 1 :(得分: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);
}
答案 2 :(得分:0)
在删除CurrentRow之前进行数学运算。 最后当你删除所有行时,CurrentRow将为null,因此是异常。