2016-02-21 113 views
0

我想對單元格值小於另一個單元格值的DataGridView的所有行進行計數。在我的代碼中,單元格value1(int a)小於單元格value2(int b)的所有行都會被獲取。但是我並沒有真正找到計算行數的方法。現在我的int計數器會發出:1,這不可能是真的。我想我會需要像dgvArticleStockInfo.RowsCount(< = b),但我沒有找到一種方法來使這項工作。任何幫助表示讚賞:)對單元格值小於另一個單元格值的DataGridView進行計數

  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

因爲你初始化counter迭代,並把它的值設置爲0。它會去你的部分,並增加它的價值,它將是1。但是在你的下一次迭代之後,你將它初始化爲零再次並且增加它。

初始化您的counter之前你的foreach循環,你應該沒問題。

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); 
    } 
} 

但比這更重要的是,您可以通過簡單的調試操作來解決此問題。我建議你閱讀這些文章來提高你的調試技能。

+0

是的初始化計數器foreach循環開始解決了這個問題之前(IDK爲什麼我沒有認識到)。謝謝 :) – dexter2k

相關問題