2011-10-11 89 views
8

我已经成功地将我的DataGridView绑定到列表。但是,当我编程改变列表中某个对象的某些属性时,网格不刷新。如果我单击单元格(或最小化然后最大化表单),则显示的值将刷新。为什么不更新DataGridView单元格?

我读here,我应该使用BindingList。我使用的列表是一个没有实现IBindingList的接口类型。但是,用来初始化列表的具体类型是从BindingList继承的。有任何想法吗?

+0

你的平台是什么? WPF?的WinForms? Silverlight的? (等) –

+0

对不起,它是Winforms。 – bsh152s

回答

9

您的列表必须执行IBindingList(或者是BindingList),并且您的对象必须执行INotifyPropertyChanged。这两个条件都需要您的DataGridView正确绑定。

所以,如果您的数据源是,例如,MyList<MyClass>MyList必须实现IBindingListMyClass必须implmenent INotifyPropertyChanged

这里是一个整洁的例子:http://crazorsharp.blogspot.com/2009/06/inotifypropertychanged-how-to-and-when.html

+0

我使用的代码是实现INotifyPropertyChanged,列表是一个绑定列表。但是,正在设置的标志关闭了通知。这个答案帮助我弄清楚了这一点。 – bsh152s