在Windows窗体中,我有一个DataGridView
控件,其中的记录是由数据源(数据绑定)填充的。每个记录都代表一个数据对象。
并非所有行都会显示:例如,只显示前10行。因此,用户可以向下滚动以查看其他记录。这没有什么特别之处。
但是,当用户在滚动后单击一行时,该行对象的数据属性会更改,这会刷新DataGridViewand
- 它会“滚动”到datagrid的顶部(可能整个DataGridView
会刷新)。这不是期望的结果。
如何在记录更新期间保持当前滚动位置?
在Windows窗体中,我有一个DataGridView
控件,其中的记录是由数据源(数据绑定)填充的。每个记录都代表一个数据对象。
并非所有行都会显示:例如,只显示前10行。因此,用户可以向下滚动以查看其他记录。这没有什么特别之处。
但是,当用户在滚动后单击一行时,该行对象的数据属性会更改,这会刷新DataGridViewand
- 它会“滚动”到datagrid的顶部(可能整个DataGridView
会刷新)。这不是期望的结果。
如何在记录更新期间保持当前滚动位置?
你可以使用DataGridView的FirstDisplayedScrollingRowIndex属性。
它获取/设置在你的DGV上显示的第一行的索引。
使用方法如下:
int rowIndex = dataGridView.FirstDisplayedScrollingRowIndex;
// Refresh your DGV.
dataGridView.FirstDisplayedScrollingRowIndex = rowIndex;
如果您对 DGV 进行排序或添加/删除行,那么当然这不会完全正常工作(您确实说过您正在更新,所以也许您没问题)。