我有一个对象数组。每个对象都有一些属性,我会定期更新这些属性。在我的表单中,我有一个DataGridView,其中row是数组中的对象,列是它们的属性。我想在DataGridView中立即看到对象的更改,所以我使用了BindingSource:
Dim _myArray(10) As MyObject
Dim bs As BindingSource = New BindingSource()
bs.DataSource = _myArray
myGrid.DataSource = bs
如果我正在更改对象中的某个属性,我通过BindingSource(不直接在数组中)进行此操作:
DirectCast(bs(index), MyObject).Property1 = newValue
所有这一切都有效但我必须调用UpdateCellValue(columnIndex, rowIndex)
来影响dataGridView中的这个新值(值是存在但我必须更新此单元格以在UI中显示新值)。
正如我所说,我会以1秒的间隔定期更改属性,因此值会经常变化。如果不打电话给UpdateCellValue
怎么办呢?
有一个带数据源的BindingSource,所以我希望在更改后立即看到更改的值。如果我必须致电UpdateCellValue
我不需要BindingSource!而不是BindingSource我可以在对象中触发一些事件PropertyChanged,在处理此事件的方法中我可以更新单元格!
我知道我可以“重新附加”DataGridView的数据源以重新加载具有更改值的数据,但如果我在1秒间隔内进行更改,则这是愚蠢的。谢谢。