System.ArgumentOutOfRangeException произошла в mscorlib.dll C # - PullRequest
1 голос
/ 18 января 2012

У меня есть 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, но во второй раз я получаю исключение (на самом деле оно говорит Первое исключение типа «System.ArgumentOutOfRangeException» произошло в mscorlib.dll ), и моя форма отображается,без запуска остальной части foreach.

Любая помощь в этом?Я попытался создать экземпляр dataGridView1.Rows[i] = new DataGridViewRow();, но он доступен только для чтения.

Ответы [ 3 ]

4 голосов
/ 18 января 2012

Вам нужно создать строки, прежде чем пытаться получить к ним доступ;

int n = dataGridView1.Rows.Add();

dataGridView1.Rows[n].Cells[0].Value = title;
dataGridView1.Rows[n].Cells[1].Value = dateTimeNow;

Тогда вы сможете получить к ним доступ через dataGridView1.Rows [ n ]. Ячейки [0]. Значение = x;

Приветствия

1 голос
/ 08 августа 2014

Добавьте следующий код выше вашего кода

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

0 голосов
/ 18 января 2012

Вы не можете добавить это таким образом. Для начала это не известно или не определено, но затем вы увеличиваете его. Вы можете добавить столько строк, сколько захотите, но добавляете их неправильно, и это то, что мы пытаемся вам сказать.

неправильное использование здесь: dataGridView1.Rows [i] .Cells [0] .Value = abonat.id;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...