繁体   English   中英

装订清单 <T> 未显示在datagridview中,它也已绑定

[英]BindingList<T> is not showing up in the datagridview it is bound too

我四处张望,似乎无法弄清楚为什么我的C#Windows Form应用程序无法正常工作。

所以我有一些私有成员的Item类:

public class Item : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string name_;

    public string name { 
        get { return name_;}
        set
        {
            name_ = value;
            this.NotifyPropertyChanged("Name");
        }
    }
    private void NotifyPropertyChanged(string name)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(name));
    }
}

然后我有另一个类,它包含项的绑定列表

public class ItemList
{
    public BindingList<Item> listItems { get; set; }

    // Default constructor
    public ItemList()
    {
        listItems = new BindingList<Item>();
    }
    public BindingList<Item> returnList()
    {
        return listItems;
    }
    public void addItem(Item newItem)
    {
        listItems.Add(newItem);
    }
}

然后我有一个BindingSource,它从listItems链接到datagridview

问题是我正在将Items添加到listItems中,并且它们未显示在datagridview中。 datagridview正在查看我的所有数据成员并为其创建列,但未显示项目。

试试这个,我有一种感觉,您一直在添加ItemList实例而不是listItems。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        ItemList list = new ItemList();
        list.listItems.Add(new Item() { name = "Sample" });
        list.listItems.Add(new Item() { name = "Sample" });
        list.listItems.Add(new Item() { name = "Sample" });
        list.listItems.Add(new Item() { name = "Sample" });
        list.listItems.Add(new Item() { name = "Sample" });
        list.listItems.Add(new Item() { name = "Sample" });

        dataGridView1.DataSource = list.listItems;

    }
}

public class Item : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string name_;

    public string name
    {
        get { return name_; }
        set
        {
            name_ = value;
            this.NotifyPropertyChanged("name");
        }
    }
    private void NotifyPropertyChanged(string name)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(name));
    }
}

public class ItemList
{
    public BindingList<Item> listItems { get; set; }

    // Default constructor 
    public ItemList()
    {
        listItems = new BindingList<Item>();
    }
    public BindingList<Item> returnList()
    {
        return listItems;
    }
    public void addItem(Item newItem)
    {
        listItems.Add(newItem);
    }
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM