读取XML并更新DataGridView

时间:2015-03-14 20:43:50

标签: c# windows datagridview

我正在创建一个Windows窗体应用程序,它从几个xml文件中读取一堆标签,并以win形式将数据写入DataGridview。目前,数据显示在DataGrid上,但如果我更改任何xml文件,则不会更新dataGridView中的数据。要求是如果在xml文件中进行了任何更改,则数据必须在dataGridView中自动更改而无需任何手动干预。我尝试在线搜索但找不到解决此问题的任何答案

如果有人解决了这个问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

字典不是绑定的理想选择 - Dictionary's ValueCollection<T>不支持IList,因此它不是BindingSource的非常好的匹配。如果你坚持使用词典,那么总是权威的Marc Gravell有一个可能适合你的解决方案here

如果您不必使用字典,那么典型的,有点天真的方法是将BindingSource.DataSource设置为List<MyObject>,然后将DataGridView.DataSource设置为该BindingSource。设置完成后,不是通过底层列表添加/删除项目,而是通过BindingSource的添加/删除方法添加/删除它们 - 用户界面将获取这些更改。如果您更改现有项目,则可以调用BindingSource.ResetItem方法通知UI它需要刷新该项目。

但最好,最灵活的方法是将DataGridView.DataSource属性设置为BindingList<MyObject>,理想情况下,让MyObject类实现INotifyPropertyChanged ... BindingList会通知新项目的UI和INotifyPropertyChanged实现通知UI有关现有项目的更改。这使您可以直接修改集合,而无需担心保持UI同步。