Binding DataGridView to List <T>不显示数据

Mit*_*nca 7 c# generics datasource list winforms

这是我的代码(这是一个非常简单的例子):

public partial class Form1 : Form
{
    List<Person> listPersons;
    public Form1()
    {
        InitializeComponent();
        listPersons = new List<Person>();
        dataGridView1.DataSource = listPersons;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text.Length > 0)
        {
            Person p = new Person();
            p.Name = textBox1.Text;
            listPersons.Add(p);
        }
    }
}

class Person
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当您按下按钮时,数据IS将添加到列表中,但不会显示在列表中DataGridView.我错过了什么?

我曾尝试设置AutoGenerateColumnsVirtualModetrue,但它还是不解决问题.

Mit*_*nca 3

但如果我只使用BindingList<T>而不是List<T>它确实有效。

示例代码:

    BindingList<Person> bl;
    public Form1()
    {
        InitializeComponent();
        bl = new BindingList<Person>();
        dataGridView1.DataSource = bl;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text.Length > 0)
        {
            Person p = new Person();
            p.Name = textBox1.Text;
            bl.Add(p);
            textBox1.Text = "";
            textBox1.Focus();
        }
    }    
Run Code Online (Sandbox Code Playgroud)

但我仍然想弄清楚如何在DataGridView将其与列表绑定后显示数据。