获取 System.ArgumentOutOfRangeException,同时在两个 Datagridview 之间复

本文关键字:两个 Datagridview 之间 ArgumentOutOfRangeException System 获取 | 更新日期: 2023-09-27 18:30:41

如果有人可以帮助解决以下问题:

System.ArgumentOutOfRangeException:索引超出范围。必须是 非负数且小于集合的大小。帕拉米特名称 :指数

代码:

for (int i = 0; i <= dataGridView2.Rows.Count ; i++)
{
   for (int j = 0; j <= dataGridView3.Rows.Count; j++)
   {
      if (!string.IsNullOrEmpty(dataGridView2.Rows[i].Cells["supplier_name"].Value as string) && !string.IsNullOrEmpty(dataGridView3.Rows[j].Cells["brands_supplier"].Value as string))
      {
         if (dataGridView2.Rows[i].Cells["supplier_name"].Value.ToString() == dataGridView3.Rows[j].Cells["brands_supplier"].Value.ToString())
         {                                   
            dataGridView2.Rows[i].Cells["brands_name"].Value += dataGridView3.Rows[j].Cells["brands_nume"].Value + " ";
         }
      }
      else
      {
         break;
      }
   }
}

获取 System.ArgumentOutOfRangeException,同时在两个 Datagridview 之间复

您尝试访问不存在的数据网格元素。
您必须将for条件设置为

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

for (int j = 0; j < dataGridView3.Rows.Count; j++)

不要使用 <=因为 dataGridView.Rows[] 的索引是从 0 开始的。

例如,如果数据网格包含 3 个元素,则可以通过以下方式访问它们:

var row1 = dataGrid.Rows[0]
var row2 = dataGrid.Rows[1]
var row3 = dataGrid.Rows[2]

您尝试访问

var row4 = dataGrid.Rows[3]  // Error because this item doesn't exist (System.ArgumentOutOfRangeException)

另外,但此项目不存在

我认为循环中的问题

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

你再跑一次

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