我在表单上有一个DataGridView,当我收到新数据时,我将记录插入到绑定到DataGridView的BindingList的开头。当有足够的记录显示垂直滚动条时,它会保留在列表的顶部。所以我总是看到列表顶部的最新记录。到目前为止,这项工作很好。
但是,当我添加代码以在列表的最后一条记录太长时删除它时,列表中的最后一条记录会自动被选中,导致滚动条“滚动”到列表中的最后一条记录DataGridView的底部。我甚至在调用RemoveAt之前和之后添加了对ClearSelection()的调用,但它仍然滚动到底部。
如何防止此行为?
答案 0 :(得分:1)
在删除记录之前,您始终可以获取所选DataGridViewRow的索引或其他此类标识符。
在bindingSource Changed事件中,您可以解析数据并设置正确的行。
要设置第一个显示的DataGridViewRow,请使用:
DataGridView1.FirstDisplayedScrollingRowIndex;
要选择相同的DataGridViewRow,请使用:
DataGridView1.Rows[DataGridView1.FirstDisplayedScrollingRowIndex].Selected = true;
请记住错误检查以确保索引值不是-1(未选中)。