2012-09-24 19 views
1

嗨,大家好即時通訊新這裏=)C#DataGridView的最後一個索引越界

我需要你的幫助,在最小的troubble情況下,爲了節省時間,我=)

的問題是有關的,我想讓datagridview單元格值和 將值保存到數組中。

到目前爲止它工作正常,但它只是讀取第一行單元格,並在 處理它只是告訴索引超出了界限,但我不明白爲什麼。

foreach (DataGridViewRow row in dataGridView1.Rows)  //wo soll er sich aufhalten -> zeilen 
       { 

        **if (row.Cells[i].Value == null)** 
        { 
         MessageBox.Show("This row is empty"); 
         break; 
        } 
         if (row.Cells[i].Value != null) 
         { 
          UnsortArray[i] = row.Cells[i].Value.ToString(); 
          MessageBox.Show(UnsortArray[i]); 
          ++i; 
         } 

       } 
+0

存儲什麼是 「我」,它看重的一個指標。您正在使用foreach循環遍歷所有行。您還需要遍歷列。 –

+0

因爲它試圖在下一行讀取'cell [length]',這是超出界限的。對索引使用兩個變量,其中一個在每一行都重置爲0。 – Thomas

+0

因爲我一直在變大嗎? – Spike

回答

2
foreach (DataGridViewRow row in dataGridView1.Rows) 
        { 
         for (int i=0; i<= dataGridView1.Columns.Count; i++) 
{ 
         **if (row.Cells[i].Value == null)** 
         { 
          MessageBox.Show("This row is empty"); 

         } 
          if (row.Cells[i].Value != null) 
          { 
           UnsortArray[i] = row.Cells[i].Value.ToString(); 
           MessageBox.Show(UnsortArray[i]); 

          } 

    } 



        } 

也,我不明白你爲什麼會想這樣做messageBox.show在循環中。它應該在循環外面。

+0

爲什麼你在if(row.Cells [i] .Value!= null)中增加i值 block? for循環已經增加了i值。 –

+0

對不起,沒有意識到... –

2
foreach (DataGridViewRow row in dataGridView1.Rows)  //wo soll er sich aufhalten -> zeilen 
       { 

        if (row.Cells[i].Value == null) 
         MessageBox.Show("This row is empty") 
        else 
         { 
          UnsortArray[i] = row.Cells[i].Value.ToString(); 
          MessageBox.Show(UnsortArray[i]); 
        // ++i; dont need to increment if you want to read only specific column 
         } 
       } 
+1

非常感謝你,你用可能的方式解決了我的問題=)我試圖投票,但它不可能!事後做! – Niko

+1

@Niko:我現在就代表你做 – Freelancer

+0

但你可以接受答案.. –

1

嘗試類似下面的代碼>>

for(int i=0;i<dataGridView1.Rows.Count;i++) 
       { 

        if (dataGridView1.Rows[i].cells[i].Value==null)** 
        { 
         MessageBox.Show("This row is empty"); 
         break; 
        } 

        else 
         { 
          UnsortArray[i] = dataGridView1.Rows[i].cells[i].Value.ToString(); 
          MessageBox.Show(UnsortArray[i]); 

         } 





       } 
+0

謝謝你們所有的代碼都在工作! – Niko

1

使用不同的指標變量UnSortArray(讓說J) i是細胞要在UnSortArray

CODE

  foreach (DataGridViewRow row in dataGridView1.Rows)  
      { 

       if (row.Cells[i].Value == null) 
       { 
        MessageBox.Show("This row is empty") 
       } 
       else 
        { 
         UnsortArray[j] = row.Cells[i].Value.ToString(); 
         MessageBox.Show(UnsortArray[j]); 
         ++j; 
        } 
      }