BindingList ListChanged事件在填充数据之前不会触发?

时间:2014-09-22 05:00:59

标签: c# events data-binding binding datagridview

我正在编写代码,最终使用数据绑定将数据从远程数据库提取到DataGridView中。我目前正在创建代码以使用CSV文件和BindingList作为测试。

我想在我的表单上显示一个显示数据库上次更新的显示。我目前在我的BindingList上使用ListChanged事件来更新"最后一次数据库更新"显示。

ListChanged事件似乎只是在最初填充数据库后连接它才会触发。这是我的类中扩展DataGridView的一些代码:

BindingList<CsvTest> Data = new BindingList<CsvTest>;

public void InitGrid()
{
    // Data.ListChanged += Data_ListChanged;  // Event never fires if this is here!
    Data = CsvTest.ParseCsv("test.csv");
    Data.ListChanged += Data_ListChanged;     // Working when it's here!
    this.DataSource = Data; // DataGridView DataSource
}

我希望延迟更新,因为列表最初是填充的。任何人都可以想到为什么这不起作用?

非常感谢。

1 个答案:

答案 0 :(得分:1)

该行

Data = CsvTest.ParseCsv("test.csv");

将覆盖您Data变量的内容。之前设置的任何值(例如Data.ListChanged)都属于旧的BindingList对象。在您设置之前,您的新BindingList对象没有值。

如果您想在ParseCsv之前设置值,则必须清除BindingList中的Data,然后添加ParseCsv中的所有项目。