2015-03-03 59 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