Исключение типа «System.InvalidOperationException» произошло в System.Windows.Forms.dll, но не обрабатывалось в коде пользователя Дополнительная информация: Строки не могут быть программно удалены, если DataGridView не является с привязкой к данным к IBindingList, который поддерживает уведомление об изменении и позволяет удалятьWinforms datagridview: drag and drop вызывает ошибку
Это, как я связываю свои данные в DataGridView:
IEnumerable<myTable> query = from p in db.myTables select p;
testList = query.ToList();
dataGridView1.DataSource = testList;
и это то, что я использую, чтобы перетащить & падение строки:
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
if (dataGridView1.SelectedRows.Count == 1)
{
if (e.Button == MouseButtons.Left)
{
rw = dataGridView1.SelectedRows[0];
rowIndexFromMouseDown = dataGridView1.SelectedRows[0].Index;
dataGridView1.DoDragDrop(rw, DragDropEffects.Move);
}
}
}
private void dataGridView1_DragEnter(object sender, DragEventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
e.Effect = DragDropEffects.Move;
}
}
private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
int rowIndexOfItemUnderMouseToDrop;
Point clientPoint = dataGridView1.PointToClient(new Point(e.X, e.Y));
rowIndexOfItemUnderMouseToDrop = dataGridView1.HitTest(clientPoint.X, clientPoint.Y).RowIndex;
if (e.Effect == DragDropEffects.Move)
{
dataGridView1.Rows.RemoveAt(rowIndexFromMouseDown);
dataGridView1.Rows.Insert(rowIndexOfItemUnderMouseToDrop, rw);
}
}
Всякий раз, когда я пытался перетащить & drop, перетаскивание в порядке, но падение вызывает ошибку, о которой я упоминал выше, и, если возможно, я не хочу использовать список привязок, потому что если я его использую, мне придется внести много изменений. Если вы можете помочь, я буду признателен.
Если вы хотите двустороннюю привязку, вам нужно будет использовать список привязки. – SpaceSteak
Я не уверен, как это сделать. Это не работает 'IEnumerable query = from p in db.EFESRDP0s select p; testList = query.ToList(); var list = new BindingList (testList); dataGridView1.DataSource = list; ' –
BarisY
Не настолько, насколько мне известно, хотя вы можете попробовать сделать некоторые исследования для альтернативы. – SpaceSteak