System.ArgumentOutOfRangeException occurred in mscorlib.dll

本文关键字:mscorlib dll in occurred ArgumentOutOfRangeException System | 更新日期: 2023-09-27 18:20:30

我有一个DataGridView,我正在从对象列表中填充它。然而,通过我的foreach的第二个循环产生了ArgumentOutOfRangeException

这是我的代码:

foreach (Abonat abonat in list.getAbonati())
{
    dataGridView1.Rows[i].Cells[0].Value = abonat.id; //exception occurs here on second loop
    dataGridView1.Rows[i].Cells[1].Value = abonat.prenume;
    dataGridView1.Rows[i].Cells[2].Value = abonat.nume;
    dataGridView1.Rows[i].Cells[3].Value = abonat.adresa;
    i++;
}

第一次运行foreach时,一切都很好,它甚至显示在DataGridView中,但第二次,我得到了异常(实际上它说在mscorlib.dll中发生了类型为"System.ArgumentOutOfRangeException"的首次机会异常),并且显示了我的表单,而没有运行foreach的其余部分。

有什么帮助吗?我试过实例化dataGridView1.Rows[i] = new DataGridViewRow();,但它是只读的。

System.ArgumentOutOfRangeException occurred in mscorlib.dll

在尝试访问行之前,需要先创建行;

int n = dataGridView1.Rows.Add();
dataGridView1.Rows[n].Cells[0].Value = title;
dataGridView1.Rows[n].Cells[1].Value = dateTimeNow;

然后您可以通过dataGridView1.Rows[n].Cells[0]访问它们。Value=x;

干杯

在您的代码上添加以下内容

dataGridView1.ColumnCount=4;dataGridView1.ColumnHeadersVisible=true;

您不能以这种方式添加它。对于初学者来说,它是不知道或定义的,但你可以增加它。你可以添加你想要的行,但你添加错误是我们试图告诉你的。

此处的用法不正确:dataGridView1.Rows[i].Cells[0].Value=abonat.id;