AllowUserToAddRows не работает с источником данных List‹› в DataGridView

У меня есть DataGridView с DataSource установленным на List<myClass>

Однако индикатор новой строки не отображается, когда я устанавливаю AllowUserToAddRows в true,

Когда я устанавливаю DataSource в BindingList<myClass>, это, кажется, решает проблему.

Вопрос. Следует ли заменить List<> на BindingList<> или есть лучшее решение?


person Wahid Bitar    schedule 14.10.2009    source источник


Ответы (1)


Есть ли у myClass общедоступный конструктор без параметров? Если нет, вы можете получить от BindingList<T> и переопределить AddNewCore для вызова собственного конструктора.

(редактировать) В качестве альтернативы - просто оберните свой список в BindingSource, и он может работать:

using System;
using System.Windows.Forms;
using System.Collections.Generic;
public class Person {
    public string Name { get; set; }

    [STAThread]
    static void Main() {
        var people = new List<Person> { new Person { Name = "Fred" } };
        BindingSource bs = new BindingSource();
        bs.DataSource = people;

        Application.Run(new Form { Controls = { new DataGridView {
            Dock = DockStyle.Fill, DataSource = bs } } });
    }
}
person Marc Gravell    schedule 14.10.2009