从BindingList中删除最后一条记录选择导致DataGridView滚动的最后一行

时间:2011-03-18 16:06:13

标签: c# .net datagridview

我在表单上有一个DataGridView,当我收到新数据时,我将记录插入到绑定到DataGridView的BindingList的开头。当有足够的记录显示垂直滚动条时,它会保留在列表的顶部。所以我总是看到列表顶部的最新记录。到目前为止,这项工作很好。

但是,当我添加代码以在列表的最后一条记录太长时删除它时,列表中的最后一条记录会自动被选中,导致滚动条“滚动”到列表中的最后一条记录DataGridView的底部。我甚至在调用RemoveAt之前和之后添加了对ClearSelection()的调用,但它仍然滚动到底部。

如何防止此行为?

1 个答案:

答案 0 :(得分:1)

在删除记录之前,您始终可以获取所选DataGridViewRow的索引或其他此类标识符。

在bindingSource Changed事件中,您可以解析数据并设置正确的行。

要设置第一个显示的DataGridViewRow,请使用:

DataGridView1.FirstDisplayedScrollingRowIndex;

要选择相同的DataGridViewRow,请使用:

DataGridView1.Rows[DataGridView1.FirstDisplayedScrollingRowIndex].Selected = true;

请记住错误检查以确保索引值不是-1(未选中)。