2011-03-01 54 views
7

在Windows窗体上我有一个DataGridView控件,其中包含由数据源(数据绑定)填充的记录。每条记录都提供一个数据对象。DataGridView控件在属性更改时滚动到顶部

并非所有的行都显示出来:只有前10个例子。所以用户可以向下滚动查看其他记录。这件事没什么特别的。

但是当用户滚动行的对象的数据性质正在发生变化后,点击一排,这刷新DataGridViewand - “滚动”到数据网格的顶部(也许整个DataGridView爽快)。这是不可取的。

如何在记录更新期间保持当前滚动位置?

回答

7

您可以使用DataGridView的FirstDisplayedScrollingRowIndex属性。

它获取/设置DGV上显示的第一行的索引。

使用方法如下:

 int rowIndex = dataGridView.FirstDisplayedScrollingRowIndex; 

     // Refresh your DGV. 

     dataGridView.FirstDisplayedScrollingRowIndex = rowIndex; 

当然,这是不行的完全正确,如果排序或添加/删除行的DGV(你是说你这样的更新,也许你是OK)。

+0

嗨Jay。这工作。谢谢你的提示。 – robertpnl 2011-03-01 20:31:26

+0

我有同样的问题。我发现它是在我的DataSource上调用AcceptChanges()来完成的,所以我通过在调用之前保存FirstDisplayedScrollingRowIndex的值并在之后恢复它来修复它。 – JonP 2017-08-02 16:55:56

相关问题