datagridview / math问题....请帮忙

时间:2011-09-09 04:17:58

标签: c# datagridview subtraction

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());”中一部分。

3 个答案:

答案 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,因此是异常。