2013-05-29 138 views
0

我期待積累每個單元格的值,並將其顯示在flex單元格中網格末端的「總列」中。哪種方法可以解決這個問題?積累行值c#

我有以下代碼到目前爲止,我不認爲是正確的!

int total = 0; 
for (int B = 3; B < 27; B++) 
{ 
    total = total + int.Parse(this.grid2.Cell(0, B).ToString()); 
    this.grid2.Cell(0, 27).Text = total.ToString(); 
} 
+0

嗯,有幾個太多「魔法值」對我的口味(什麼是'27'爲什麼開始?在'3'?),但是總結一個循環遍歷所有值和'total + = value'是一個很好的方法。但是在'for'循環之外放置'this.grid2.Cell(0,27).Text = total.ToString();'!無需每次都寫出總數。只要你真的擁有它,就寫下來。 'int.Parse(this.grid2.Cell(0,B).ToString())'看起來非常難看。什麼是'this.grid2.Cell(0,B)'的類型? – Corak

+0

我想在單元格3中開始總和並在單元格27中完成總和 –

回答

0

您的代碼似乎是正確的我,但它可以改進:

int total = 0; 
for (int B = 3; B < 27; B++) 
{ 
     total = total + Convert.ToInt32(this.grid2.Cell(0, B)); 
} 

this.grid2.Cell(0, 27).Text = total.ToString(); 

只能把事情需要for循環中被重複。如果只需要執行一次,則將其放在循環之後(或者在可能之前)。 另外,嘗試爲變量使用更多有意義的名稱。如果您不想給它一個長名稱或'列',我會將'B'更改爲'我',以便您(和其他開發人員,如我們)知道它的意義。

順便說一句,代碼計算一行(第一個)的總和。如果你想這樣做的每一行,那麼你將需要一個雙for循環:

for(int row = 0;row < numRows; row++){ 
    int total = 0; 
    for (int column = 3; column < 27; column++) 
    { 
      total = total + Convert.ToInt32(this.grid2.Cell(row, column)); 
    } 
    this.grid2.Cell(row, 27).Text = total.ToString(); 
}