c# - 将 DataGridView 绑定(bind)到 List<T> 不显示数据

标签 c# winforms list generics datasource

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

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

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

我已经尝试将 AutoGenerateColumnsVirtualMode 设置为 true,但这也没有解决问题。

最佳答案

已经有一段时间了,自从处理试图将 Lists 绑定(bind)到 DataGridViews 的 WinForms 代码以来,我已经换了工作。如果我没记错的话,无论您绑定(bind)什么,都需要实现 IBindingList,而 List 则不需要。我可能错了。

反正我用的是BindingListView ,这是非常快速和容易的。你只需要做:

List<Customer> customers = GetCustomers();
BindingListView<Customer> view = new BindingListView<Customer>(customers);
dataGridView1.DataSource = view; 

你就完成了。我已经有几年没看过源代码了,但我相信它用实现 IBindingList 的类包装了 List

关于c# - 将 DataGridView 绑定(bind)到 List<T> 不显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024893/

相关文章:

c# - 如何在 NLog 的嵌套 JsonLayout 中禁用转义正斜杠符号

c# - 如何使用 C#/.Net 将文件列表从 AWS S3 下载到我的设备?

c# - 检查泛型类是否继承自接口(interface)

python - 如何将列表复制一定次数

r - 如果字符串包含列表中的元素,则创建新的条件列

c# - 面向对象的嵌套字典数据结构

c# - 将引用库中的自定义用户控件添加到工具箱

c# - 将列表数组中的值绑定(bind)到列表框

c# - 如何使 C# 窗体镜像?

python - 如何在 python 中使用 list[list.index ('' )] 查询