Добавление ячейки datagridview при нажатии кнопки вызывает ошибку Коллекция уже принадлежит.

Я динамически добавляю datagridview в форму. После загрузки формы, если пользователь хочет добавить новую строку, у меня есть кнопка, с помощью которой можно добавить ее. Нажав эту кнопку, я пытаюсь добавить DataGridViewComboBoxCell:

DataGridViewRow dtRow = new DataGridViewRow();
dgv1.Rows.Add(dtRow);
int RowIndex = dgv1.Rows.IndexOf(dtRow);
int TotalRowsvailable = NPDESconfigModel.Count; // rows in database

 if (RowIndex >= TotalRowsvailable) // to see if this is the new row 
{
 List<string> a = (from p in y
                   select p.Point_Name).ToList();

 DataGridViewComboBoxCell cbcell = new DataGridViewComboBoxCell(); 
 cbcell.DataSource = a;
 cbcell.DisplayMemeber = "Point_Name";
 dgv1.Rows[RowIndex].Cells.Add(cbcell);
}

Исключение, которое я получаю в последней строке кода, приведено ниже. Коллекция уже принадлежит элементу управления DataGridView. Эта операция больше недействительна.

Не знаю, что это значит.

После исключения формы загружаются с новой строкой и пустой ячейкой.


person challengeAccepted    schedule 24.07.2015    source источник


Ответы (1)


Вы должны поместить новую ячейку в существующую ячейку, а не в конец коллекции ячеек.

Может быть так:

 dgv1.Rows[RowIndex].Cells[yourComboboxColumnIndex] = cbcell;

Сообщение об ошибке означает, что вы можете добавлять в коллекцию Cells строку, только если она не является частью DataGridview. Вы можете создать DataGridViewRow в коде и добавить к нему подходящее количество подходящих ячеек. Затем вы можете добавить его в DGV; но в конечном итоге все строки должны иметь одинаковое количество ячеек.

person TaW    schedule 24.07.2015
comment
Большое спасибо, @TaW - person challengeAccepted; 24.07.2015