2017-02-03 18 views
1

我最初創建了一個用於迭代DGV的foreach DGVrow,但這需要很長時間,因爲它會遍歷包含數千行的整個數據網格。我把它們分別轉換爲以下內容:嘗試按選定行遍歷DataGridView;接收索引出界

 if (DGVmain.RowCount > 0) 
     { 
      if (DGVmain.SelectedCells.Count <= 0) 
      { 
       return; 
      } 
      //Source 
      OpenFileDialog openFileDialog = new OpenFileDialog(); 
      openFileDialog.Filter = "Excel Files|*.xls;*.xlsx"; 
      openFileDialog.ShowDialog(); 
      lblSuccess.Text = openFileDialog.FileName; 
      lblPathings = Path.ChangeExtension(openFileDialog.FileName, null); 
      int count = DGVmain.SelectedRows.Count; 
      foreach (DataGridViewRow selectedRow in DGVmain.SelectedRows) 
      { 
       //Drag 
       if (lblSuccess.Text == null) 
        return; 
       //Drag 
       if (lblSuccess.Text == null) 
        return; 
       string dragsy = Convert.ToString(selectedRow.Cells[1].Value); 
       string drag = Convert.ToString(selectedRow.Cells[2].Value); 
       string drag2 = Convert.ToString(selectedRow.Cells[3].Value); 
       string drag3 = Convert.ToString(selectedRow.Cells[4].Value); 
       string drag4 = Convert.ToString(selectedRow.Cells[5].Value); 
       string drag5 = Convert.ToString(selectedRow.Cells[6].Value); 
       string drag6 = Convert.ToString(selectedRow.Cells[7].Value); 
       string drag7 = Convert.ToString(selectedRow.Cells[8].Value); 
       string drag8 = Convert.ToString(selectedRow.Cells[9].Value); 
       string drag9 = Convert.ToString(selectedRow.Cells[10].Value); 
       string drag10 = Convert.ToString(selectedRow.Cells[11].Value); 
       Persona = drag; 
       generateID(); 
       } 
      } 
     } 

我剪掉了函數處理數據的部分,將其插入到Excel文件中。這不是拋出一個錯誤,所以我認爲一切都是正確的語法安排?這個循環有什麼問題?

我只收到索引超出數組的界限。

+0

也許沒有'細胞[11]'。我猜細胞應該從0到10 – Pikoh

+0

啊,都是DataGridViews 0基於? – Arvayne

+0

在c#中,所有數組都是0基於 – Pikoh

回答

4

在C#中,所有數組均爲0。所以這個問題必須是您試圖訪問從selectedRow.Cells[1]selectedRow.Cells[11],什麼時候應該使用selectedRow.Cells[0]selectedRow.Cells[10]