Почему я получаю эту ошибку при удалении строки в элементе управления DataGridView? - PullRequest
8 голосов
/ 06 декабря 2011

Почему я получаю эту ошибку при удалении строки в элементе управления DataGridView? Как я могу решить эту проблему?

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);
        }
    }

Ответы [ 3 ]

15 голосов
/ 06 декабря 2011

List<T> не реализует IBindingList,

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

Вам нужно использовать класс, который реализует IBindingList

Используйте BindingList<T> или DataTable вместо

2 голосов
/ 06 декабря 2011

Вы должны удалить элемент из списка person.

person.RemoveAt(0);
0 голосов
/ 06 декабря 2011

Мое решение:

void BtnDeleteClick(object sender, EventArgs e)
{
    person.RemoveAt(dataGridView1.SelectedRows[0].Index);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...