将对象添加到列表时,绑定到列表的 DataGridView 不会反映更改

Rob*_*ert 4 c# data-binding datagridview winforms

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

\n\n

我确实有一个List<ioChannel>(名为myList)这种类型的对象:

\n\n
public class ioChannel\n{\n    public string Name { get; set; }\n    public int Id { get; set; }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
bs = new BindingSource { DataSource = myList };\ndgvChannels.DataSource = bs;\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
private void btAddChannel_Click(object sender, EventArgs e)\n{\n    myList.Add(new ioChannel() { Id = myList.Count, Name = "My Channel" });\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

顺便说一句:在将 BindingSource 指定为数据源之前myList填充一些ioChannel\xc2\xb4s 时,会在网格中正确显示。

\n

Hai*_*ihi 5

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

BindingList<ioChannel> myList = new BindingList<ioChannel>();
dgvChannels.DataSource = myList;
Run Code Online (Sandbox Code Playgroud)

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