如何滚动,直到它到达底部,然后重置到顶部
本文关键字:底部 然后 顶部 何滚动 滚动 | 更新日期: 2023-09-27 18:17:36
使用Winforms
,我有一个Datagridview
由我的数据库中的数据填充。我每5秒刷新一次datagridview
,以反映数据库中所做的任何更改。
我想知道如何在每次刷新datagridview
时向下滚动一点,直到它到达底部。当它到达底部时,我想将滚动条重置到顶部。
目前我有这个代码:
if(scrollPosition < dataGridView1.RowCount - 1 - 5)
{
scrollPosition+=5;
}
else
{
// the scroll value has already exceeded, reset to 0
scrollPosition = 0;
}
dataGridView1.FirstDisplayedScrollingRowIndex = scrollPosition;
我的scrollPosition的默认值是0顺便说一下
它可以正常向下滚动,但似乎没有复位到顶部。它不经过第二个if语句。我知道我在这里漏掉了一些逻辑。我做错了什么?
更新:让它与黄大的答案一起工作,并且也更新了我上面的当前代码,但它仍然看起来有bug。有时它已经到达底部,但它不会滚动回顶部。有时我需要等待大约1到5"+=5"的增量,然后它会滚动到顶部,也就是触发else语句。
我想问一个后续问题。正在使用dataGridView1。在这种情况下,RowCount真的是可行的吗?或者有更好的东西可以用来比较我的scrollPosition吗?
有一个非常明显的问题:如果scrollPosition
超过dataGridView.RowCount
, scrollPosition == dataGridView1.RowCount
可能不正确,因为它每次增长5。
可能的修复方法是将"=="改为">=",即:
if(scrollPosition >= dataGridView1.RowCount)
{
//do your stuff
}
据我所知,你不能得到实际的DGV滚动条最小/最大,因此你不能设置它。
如果黄大建议是ok的,那么当你的表单加载得到 FirstDisplayedScrollingRowIndex
值,当你想重置它回到顶部 dataGridView1.FirstDisplayedScrollingRowIndex = value
编辑或者直接设置dataGridView1.FirstDisplayedScrollingRowIndex = 0