我想计算一个DataGridView的所有行,其中一个单元格值小于另一个单元格值。在我的代码中,单元格value1(int a)小于单元格value2(int b)的所有行都会被标记。但我真的没有办法计算行数。现在我的int计数器会给出:1这不可能是真的。我想我需要像dgvArticleStockInfo.RowsCount(a< = b)这样的东西,但我没有找到办法让这项工作。任何帮助表示赞赏:)
foreach (DataGridViewRow row in dgvArticleStockInfo.Rows)
{
int counter = 0;
int a = Convert.ToInt32(row.Cells[2].Value);
int b = Convert.ToInt32(row.Cells[3].Value);
if (a <= b)
{
row.DefaultCellStyle.BackColor = Color.FromArgb(144, 238, 144);
panel1.BackColor = Color.FromArgb(144, 238, 144);
counter++;
}
else
{
row.DefaultCellStyle.BackColor = Color.FromArgb(255,106,106);
panel2.BackColor = Color.FromArgb(255,106,106);
}
}
答案 0 :(得分:0)
因为您在每次迭代中初始化了counter
并将其值设为0
。它转到你的if部分并增加它的值,它将是1
。但是在下一次迭代之后,你将它初始化为零再次并增加它。
在你的foreach循环之前初始化你的counter
,你应该没事。
int counter = 0;
int a = Convert.ToInt32(row.Cells[2].Value);
int b = Convert.ToInt32(row.Cells[3].Value);
foreach (DataGridViewRow row in dgvArticleStockInfo.Rows)
{
if (a <= b)
{
row.DefaultCellStyle.BackColor = Color.FromArgb(144, 238, 144);
panel1.BackColor = Color.FromArgb(144, 238, 144);
counter++;
}
else
{
row.DefaultCellStyle.BackColor = Color.FromArgb(255,106,106);
panel2.BackColor = Color.FromArgb(255,106,106);
}
}
但更重要的是,您可以通过简单的调试操作解决此问题。我建议你阅读这些文章以提高你的调试技巧。