c# сумма столбца dgv

программирование C#

есть код:

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || e.RowIndex > dataGridView1.RowCount) return;
if (e.ColumnIndex == 0 || e.ColumnIndex == 1 || e.ColumnIndex == 2)
dataGridView1[3, e.RowIndex].Value =
(double.Parse(dataGridView1[1, e.RowIndex].Value.ToString())) * (double.Parse(dataGridView1[2, e.RowIndex].Value.ToString())) -
(double.Parse(dataGridView1[0, e.RowIndex].Value.ToString())) * (double.Parse(dataGridView1[2, e.RowIndex].Value.ToString())) * 128.8 / 100;
}

как записать сумму 3го столбца в textbox и обновлять по мере ввода данных в столбец???

Примечание:
2Billko8, ты понимаешь что пишешь?

Примечание:
Сделал так:

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || e.RowIndex > dataGridView1.RowCount) return;
if (e.ColumnIndex == 0 || e.ColumnIndex == 1 || e.ColumnIndex == 2)
{
dataGridView1[3, e.RowIndex].Value =
(double.Parse(dataGridView1[1, e.RowIndex].Value.ToString())) * (double.Parse(dataGridView1[2, e.RowIndex].Value.ToString())) -
(double.Parse(dataGridView1[0, e.RowIndex].Value.ToString())) * (double.Parse(dataGridView1[2, e.RowIndex].Value.ToString())) * 128.8 / 100;

this.Controls.OfType<TextBox>().All(x => (x.Text = string.Empty) == string.Empty);
double result = 0;
double sumi = double.Parse(dataGridView1[3, e.RowIndex].Value.ToString());
sumi = Math.Round(sumi, 2);
result = result + sumi;
textBox1.AppendText(Convert.ToString(result));
}
}

но текстбокс показывает просто результат вычисления в 4й ячейке после записи значения в 3ю, а не сумму столбца как должен..
Ответы:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
       {
           if (e.ColumnIndex==1 || e.ColumnIndex==2)
                 dataGridView1[3, e.RowIndex].Value = dataGridView1[1, e.RowIndex].Value.ToString() + dataGridView1[2, e.RowIndex].Value.ToString();
       }
1. у TextBox'а должно быть свойство Text типа string.
2. вычисления избыточные. можно так:
   dataGridView1[3, e.RowIndex].Value =
       (Convert.ToDouble(dataGridView1[1, e.RowIndex].Value) * Convert.ToDouble(dataGridView1[2, e.RowIndex].Value)) - ...
value сразу конвертится в double, а у тебя между ними еще string используется
3. насчет обновления textbox'a думаю лучше создать обработчик события textchanged, в котором прописать Invalidate();


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.