绑定到列表的DataGridView在向列表添加对象时不反映更改

本文关键字:列表 对象 添加 DataGridView 绑定 | 更新日期: 2024-09-23 20:43:31

我想知道我需要做什么才能使DataGridView按预期运行:

我确实有一个List<ioChannel>(名为myList),包含以下类型的对象:

public class ioChannel
{
    public string Name { get; set; }
    public int Id { get; set; }
}

我试图将DataGridView绑定到此列表:

bs = new BindingSource { DataSource = myList };
dgvChannels.DataSource = bs;

现在我创建了一个按钮,将元素添加到myList:

private void btAddChannel_Click(object sender, EventArgs e)
{
    myList.Add(new ioChannel() { Id = myList.Count, Name = "My Channel" });
}

当我按下按钮时,我的列表会填充新的ioChannel,但dgvChannels不会添加任何行。为了实现这一点,我需要做什么?

BTW:在将BindingSource指定为DataSource之前,当myList填充了一些ioChannel时,就会在网格中正确显示。

绑定到列表的DataGridView在向列表添加对象时不反映更改

正如@Loathing评论的那样BindingList也对我有用。它将如何工作:

BindingList<ioChannel> myList = new BindingList<ioChannel>();
dgvChannels.DataSource = myList;

BindingList具有通知列表中更改的事件。为了让datagridview能够被通知重新绘制自己,请检查此项。有关详细信息,请访问msdn。