// We can exit because the NewRow is always last
if (row.IsNewRow)
break;
-
+
+ row.SetDataGridView(null);
list.Remove (row);
ReIndex ();
}
throw new InvalidOperationException ("Cannot delete the new row");
DataGridView.OnRowsPreRemovedInternal (new DataGridViewRowsRemovedEventArgs (dataGridViewRow.Index, 1));
+ dataGridViewRow.SetDataGridView(null);
list.Remove (dataGridViewRow);
ReIndex ();
OnCollectionChanged (new CollectionChangeEventArgs (CollectionChangeAction.Remove, dataGridViewRow));
internal virtual void RemoveInternal (DataGridViewRow dataGridViewRow)
{
DataGridView.OnRowsPreRemovedInternal (new DataGridViewRowsRemovedEventArgs (dataGridViewRow.Index, 1));
+ dataGridViewRow.SetDataGridView(null);
list.Remove (dataGridViewRow);
ReIndex ();
OnCollectionChanged (new CollectionChangeEventArgs (CollectionChangeAction.Remove, dataGridViewRow));
catch (ArgumentOutOfRangeException) {
}
}
+
+ [Test] // Xamarin bug 3125
+ public void TestRemoveBug3125()
+ {
+ DataGridViewRow dgvr1 = new DataGridViewRow();
+ DataGridViewRow dgvr2 = new DataGridViewRow();
+ DataGridViewRow dgvr3 = new DataGridViewRow();
+
+ Assert.IsNull (dgvr1.DataGridView, "#1");
+ Assert.IsNull (dgvr2.DataGridView, "#2");
+ Assert.IsNull (dgvr3.DataGridView, "#3");
+
+ DataGridView dgv = new DataGridView();
+ dgv.Rows.Add(dgvr1);
+ dgv.Rows.Add(dgvr2);
+ dgv.Rows.Add(dgvr3);
+
+ dgv.Clear();
+
+ Assert.IsNull(dgvr1.DataGridView, "#4");
+ Assert.IsNull(dgvr2.DataGridView, "#5");
+ Assert.IsNull(dgvr3.DataGridView, "#6");
+ }
}
[TestFixture]