2015-03-03 99 views
2

我不知道我需要什么,以使DataGridView中的行为做的并不如预期反映更改)这种类型的对象:的DataGridView绑定到列表中添加对象时,列表

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不添加任何行。为了做到这一点,我需要做些什么?

顺便说一句:当myList得到填充一些ioChannel之前分配BindingSource作为数据源,获得正确显示在网格中。

+4

我认为你需要使用'BindingList '。它有DGV可以听到的事件。 – Loathing 2015-03-03 12:52:28

+0

就是这样。谢谢! – Robert 2015-03-03 15:24:43

回答

1

As @Loathing评论BindingList也适用于我。它将如何工作:

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

BindingList具有通知列表中的更改的事件。这样datagridview可以通知重绘自己,check this。欲了解更多信息,请访问msdn