gpt4 book ai didi

c# - 如何动态获取文本框中datagridview列的总和

转载 作者:太空狗 更新时间:2023-10-30 00:01:29 25 4
gpt4 key购买 nike

我想获取 datagridview 的一列的总和并将其显示在文本框中。每次输入后,总和应动态更改。为此,我正在使用文本框的 textChanged 事件,但是当输入时它不显示任何结果。我想在文本框中动态获取结果。我想避免使用按钮求和。

这是文本框 textChanged 事件的一段代码:

private void textBox9_TextChanged(object sender, EventArgs e)
{
double sum = 0;
for (int i = 0; i < dataGridView2.Rows.Count; ++i)
{
sum += Convert.ToDouble(dataGridView2.Rows[i].Cells[5].Value);
}
textBox9.Text = sum.ToString();
}

最佳答案

您的代码是正确的,但我将它放在 CellValueChanged 事件中并检查以确保它与您要查找的单元格相同。如果单元格的值发生变化,或者如果添加新行并随后获得分配的值,这将被触发。

    private void dataGridView2_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 5)
textBox9.Text = CellSum().ToString();
}

private double CellSum()
{
double sum = 0;
for (int i = 0; i < dataGridView2.Rows.Count; ++i)
{
double d = 0;
Double.TryParse(dataGridView2.Rows[i].Cells[5].Value.ToString(), out d);
sum += d;
}
return sum;
}

我将您的逻辑拆分到一个单独的方法中,因此万一您想要获取其他内容的总和,您只需调用该方法即可。我想您可以只阅读 textbox.Text,但是...

我还使用了 Double.TryParse,因为它提供了一些基本保护,以防给定单元格中的值实际上不是数字。我不知道数据的来源是什么(用户输入/来自外部来源?)所以我想我应该添加一点保护。

编辑 格兰特提出了一个很好的观点,编辑了我的解决方案以包括正在修改的单元格值。我使用了 CellValueChanged 事件而不是 CellEndEdit,以防用户以外的东西可以更改它的值。

关于c# - 如何动态获取文本框中datagridview列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19963074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com