我有一个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();
,但它是只读的。
答案 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;