我想获得 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,因为它提供了一些基本保护,以防给定单元格中的值实际上不是数字。我不知道数据的来源是什么(用户输入/从外部来源输入?),所以我想我应该添加一些保护。
Edit格兰特提出了一个很好的观点,编辑了我的解决方案以包括正在修改的单元格值。我使用 CellValueChanged 事件而不是 CellEndEdit,以防用户以外的其他人可以更改其值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)