mscorlib.dll C#中发生System.ArgumentOutOfRangeException

时间:2012-01-17 20:10:27

标签: c# exception datagridview

我有一个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中,但第二次,我得到了异常(实际上它说类型'系统的第一次机会异常.ArgumentOutOfRangeException'发生在mscorlib.dll )并显示我的表单,而不运行foreach的其余部分。

对此有何帮助?我已尝试实例化dataGridView1.Rows[i] = new DataGridViewRow();,但它是只读的。

3 个答案:

答案 0 :(得分:4)

您需要在尝试访问它们之前创建行;

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;

干杯

答案 1 :(得分:1)

在代码上方添加以下内容

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

答案 2 :(得分:0)

你不能这样添加它。对于初学者来说,它不知道或定义,但随后你增加它。您可以添加所需的行数,但是我们正在尝试告诉您错误添加它们。

这里使用不正确:dataGridView1.Rows [i] .Cells [0] .Value = abonat.id;