我有一个对象数组 . 每个对象都有一些属性,我会定期更新这些属性 . 在我的表单中,我有一个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秒间隔内进行更改,则这是愚蠢的 . 谢谢 .