Why am I getting this error when deleting a row in a DataGridView control?

Why am I getting this error when deleting a row in a DataGridView control? How can I solve this problem?

Rows cannot be programmatically removed unless the DataGridView is data-bound to an IBindingList that supports change notification and allows deletion. 

 public partial class Form1 : Form { List<Person> person = new List<Person>(); public Form1() { InitializeComponent(); } void Form1Load(object sender, EventArgs e) { person.Add(new Person("McDonalds", "Ronald")); person.Add(new Person("Rogers", "Kenny")); dataGridView1.DataSource = person; } void BtnDeleteClick(object sender, EventArgs e) { dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); } } 
+8
c # winforms
source share
3 answers

List<T> does not implement IBindingList ,

 public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable 

You need to use a class that implements IBindingList

Use BindingList<T> or DataTable instead

+14
source share

You need to remove the item from the person list.

 person.RemoveAt(0); 
+2
source share

My decision:

 void BtnDeleteClick(object sender, EventArgs e) { person.RemoveAt(dataGridView1.SelectedRows[0].Index); } 
0
source share

All Articles