datagridview / математическая задача .... пожалуйста, помогите - PullRequest
0 голосов
/ 09 сентября 2011
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 ());" часть.

Ответы [ 3 ]

1 голос
/ 09 сентября 2011

В вашем коде вы удаляете строку перед уменьшением цены от фактической цены, поэтому существует исключение «Ссылка на объект не установлена ​​на экземпляр объекта». Попробуйте удалить строку после вычета цен.

0 голосов
/ 09 сентября 2011

Выполните математические операции перед удалением CurrentRow. В конце концов, когда вы удалите все строки, CurrentRow будет нулевым, следовательно, исключение.

0 голосов
/ 09 сентября 2011

Сделайте математику перед удалением строки - тогда она все равно будет существовать.

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