Datagridview 列 SUM 到文本框并使用每个添加行更新文本框

Datagridview column SUM to textbox & update textbox with each adding row

我是 C# 的新手,我需要你的帮助来解决我的以下问题。 我有 DGV,它没有绑定到任何数据源。我几乎没有文本框和日期时间选择器来将数据添加到 DGV。一旦用户按下我表单中的 "ADD" 按钮,它将向 DGV 添加新行。我的问题是我需要将我的 DGV 中第 4 列的总和输入到我表单中的文本框中,这是总帐单价值。并且应该随着每次添加行列第 5 个值

进行更新

希望你们理解我的问题。对不起,我的英语不好。欢迎任何代码。

textBox10.Text = "0";
           foreach (DataGridViewRow row in dgvFE.Rows)
           {
              int n1 = row.Index;
              textBox10.Text = (Double.Parse(textBox10.Text.ToString()) + Double.Parse(dgvFE.Rows[n].Cells[4].Value.ToString())).ToString();


           }

我在 "ADD" 按钮点击事件下输入了上面的代码。但我的 textbox10 只显示账单价值的第一行。不是第 5 列中所有行的总和。 (用户可以像我之前提到的那样添加更多列。)

我在同一个按钮点击事件下尝试了下面的代码,但 textbox10 中的结果与上面的代码相同。

int sum = 0;
for (int x = 0; x < dgvFE.Rows.Count; x++ )
{
  sum += Convert.ToInt32(dgvFE.Rows[x].Cells[4].Value);
}

请帮忙。

从您的 post 看来,应用程序用户将手动将数据输入网格。如果是这样,使用添加按钮单击事件不是更新总数的正确位置。

我假设您在单击 "Add" 按钮时添加了一个新行。它只是一个新行,不会有任何数据。当用户输入数据时,事件已经处理,textbox10 不会更新。

您应该使用 DataGridView.CellValueChanged 事件来更新您的列总数。

代码示例:

    void dgvFE_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 4)
        {
            textBox10.Text = (from DataGridViewRow r in dgvFE.Rows
                             select Convert.ToDouble(r.Cells[e.ColumnIndex].Value))
                             .Sum().ToString();
        }
    }