如果有人可以帮助解决以下问题:
System.ArgumentOutOfRangeException:索引超出范围。一定是 非负面且小于集合的大小。参数名称 :index
代码:
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;
}
}
}
答案 0 :(得分:1)
您尝试访问不存在的数据网格元素
您必须将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)
同样,但此项目不存在
答案 1 :(得分:0)
我认为周期中的问题
for (int i = 0; i <= dataGridView2.Rows.Count ; i++)
你又跑了一次
使用
for (int i = 0; i < dataGridView2.Rows.Count ; i++)