2011-09-09 19 views
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();   
    } 

を助けてください、目的はdgvSelectedと削除にちなんで名付けられたdatagridviewに項目名と価格を持って選択した行を削除することです、削除行の価格がすることです現在の合計に引かれます。問題は、最後の行に来たときに削除された場合、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生することです。 "price - = Convert.ToDecimal(dgvSelected.SelectedCells [3] .Value.ToString());"部。のDataGridView /数学の問題....そのコードで

+0

まだ同じ問題に直面していますか? –

答えて

1

コードでは、価格を実際の価格から引き下げる前に行を削除するため、「オブジェクトのインスタンスがオブジェクトのインスタンスに設定されていません」という例外がありますので、価格を差し引いて行を削除してください。

+0

申し訳ありませんが、今、働いています...たくさんありがとうございます... –

+0

@erwin私はあなたがこれを回答として受け入れるべきだと思います – V4Vendetta

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); 
    } 
0

CurrentRowを削除する前に数値演算を行います。 最後に、すべての行を削除すると、CurrentRowはnullになり、したがって例外が発生します。