2011-11-03 65 views
0

我有一個非常簡單的一般編程問題,但我不能完全得到我期待的結果。基本上,我有一個名爲dataGridView3(2列)的DataGridView,我希望用戶能夠輸入任意多個字段,並根據這些字段創建一系列字符串。我的問題是,形成的字符串一次只能包含dataGridView的4個元素,但是對於我當前的實現,它將每行放入第一個字符串中(請參閱示例)。循環和字符串形成

這是我目前使用的代碼。

  for (int i = 0; i < dataGridView3.Rows.Count; i++) 
      { 
       if (i % 4 == 0) 
       { 
        newPA61String += "PA61"; 
        for (int j = i; j < dataGridView3.Rows.Count - 1; j++) 
        { 
         newPA61String += " " + (dataGridView3.Rows[j].Cells[0].Value.ToString().PadLeft(5, leftPaddingChar)) 
          + " " + (dataGridView3.Rows[j].Cells[1].Value.ToString().PadRight(6, rightPaddingChar)); 
        } 
        newPA61String = newPA61String.PadRight(56, rightPaddingChar); 
        newPA61String += "\r\n"; 
       }   
      } 

採用6行數據,這個代碼給我的輸出:

PA61 00001 a  00002 b  00003 c  00004 d  00005 e  00006 f  
PA61 00005 e  00006 f  

我想它看起來像這樣;不過,我不能完全操縱它的方式我想:

PA61 00001 a  00002 b  00003 c  00004 d 
PA61 00005 e  00006 f  

我的第一反應是剛截斷第一個字符串達到指定的長度之後,但在串通過將一切在同一行分裂形成通過「\ r \ n」,這樣做可以消除前4列後的任何內容。

我知道解決的辦法可能是相當明顯的,但我有提前的那些日子之一。

謝謝你,如果你需要任何額外的信息,請詢問。

+2

這與遞歸有什麼關係? – svick

+0

你是對的,它沒有。我很抱歉。 – almostProgramming

回答

1

變化:

for (int j = i; j < dataGridView3.Rows.Count - 1; j++) 

到:

for (int j = i; j < Math.Min(dataGridView3.Rows.Count, i + 4); j++) 

而且你可以移動Math.Min表達出循環。

雖然我發現while循環更清楚這種事情。

+0

這個伎倆。十分感謝你的幫助。 – almostProgramming

0

遍歷的PA61項目的數量插入,沒有結束的行,然後計算的行和列(或單元)數量是這樣的:

for (int i = 0; i < pa61ItemsCount; i++) 
{ 
    int row = i/4; 
    int cell = i % 4; 
    ... 
}