C# Datagridview列与文本框的总和&;使用每个添加行更新文本框

C# Datagridview列与文本框的总和&;使用每个添加行更新文本框,c#,datagridview,sum,multiple-columns,C#,Datagridview,Sum,Multiple Columns,我是C#的新手&我下面的问题需要你的帮助。 我没有DGV&它没有绑定到任何数据源。我有几个文本框和datetimepicker向DGV添加数据。一旦用户在我的表单中按下“添加”按钮,它将向DGV添加新行。我的问题是,我需要将DGV中第4列的总和输入到表单中的文本框中,该文本框是账单的总价值。它应该随着每行第5列值的增加而更新 希望你们能理解我的问题。对不起,我的英语不好。欢迎使用任何代码 textBox10.Text = "0"; foreach (DataGridView

我是C#的新手&我下面的问题需要你的帮助。 我没有DGV&它没有绑定到任何数据源。我有几个文本框和datetimepicker向DGV添加数据。一旦用户在我的表单中按下“添加”按钮,它将向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();


           }
我已经在“添加”按钮点击事件下输入了上述代码。但我的textbox10只显示账单价值的第一行。不是第5列中所有行的总和。(如前所述,用户可以添加更多列。)

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

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

请提供帮助。

从您的帖子中可以看出,应用程序用户将手动将数据输入网格。如果是这样,使用Add button click事件不是更新总数的正确位置

我假设您在单击“添加”按钮时正在添加新行。它只是一个新行,不会有任何数据。当用户输入数据时,事件已经处理,并且不会更新
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();
        }
    }

如果您试图访问第4列中的值,则应该是单元格[3]。嗨,Vindula,很抱歉,我提到的是错误的。列为第5个单元格[4]。问题已更新。你能帮我吗?维杜拉,我刚找到答案。应在DataGridView.CellValueChanged事件下输入总和代码。谢谢。很好,是的,使用CellValueChanged事件很有意义。嗨,拉维,谢谢你的评论。是的,你完全正确。我已经在DataGridView.CellValueChanged事件下添加了第二个代码&它可以工作。第一个代码抛出NullReferenceException时不工作。错误为“对象引用未设置为对象的实例”