【问题标题】:DataGridView bound to List does not reflect changes when adding objects to the List将对象添加到 List 时,绑定到 List 的 DataGridView 不反映更改
【发布时间】:2015-05-04 03:00:44
【问题描述】:

我想知道我需要做什么才能使 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 不会添加任何行。我需要做什么才能做到这一点?

顺便说一句:当 myList 在将 BindingSource 分配为 DataSource 之前填充了一些 ioChannel 时,网格中会正确显示。

【问题讨论】:

  • 我认为您需要使用BindingList<T>。它有 DGV 可以监听的事件。

标签: c# winforms data-binding datagridview


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2017-05-18
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    相关资源
    最近更新 更多