C# 如何滚动到底部,然后重置为顶部?
使用C# 如何滚动到底部,然后重置为顶部?,c#,winforms,datagridview,C#,Winforms,Datagridview,使用Winforms,我有一个Datagridview,由数据库中的数据填充。我每5秒刷新一次datagridview,以反映数据库中所做的任何更改 我想知道如何在每次刷新datagridview时向下滚动一点,直到它到达底部。当它到达底部时,我想将滚动条重置回顶部 目前我有以下代码: if(scrollPosition < dataGridView1.RowCount - 1 - 5) { scrollPosition+=5; } else { // the scrol
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;
if(滚动位置
顺便说一下,我的scrollPosition的默认值是0
它会正确向下滚动,但似乎不会重置回顶部。它没有通过我的第二个if语句。我知道我只是缺少一些逻辑。我做错了什么
更新:得到了与黄达的答案,并更新了我目前的代码上面,但它似乎仍然有缺陷。有时它已经到达底部,但不会滚动回顶部。我有时需要再等待大约1到5“+=5”的增量,然后它将滚动到顶部并触发else语句
我想问一个后续问题。在这种情况下,使用dataGridView1.RowCount真的是一种方法吗?或者有什么更好的方法可以用来比较我的scrollPosition吗?有一个非常明显的问题:
scrollPosition==dataGridView1。如果scrollPosition
超过dataGridView.RowCount
,则RowCount可能不是真的,因为它每次增加5
可能的修复方法是将“==”更改为“>=”,即:
if(scrollPosition >= dataGridView1.RowCount)
{
//do your stuff
}
据我所知,您无法获得实际的dgv滚动条最小/最大值,因此您无法设置它
如果huangda的建议是正确的,那么当您的表单加载时,将获得第一次显示的ScrollingRowIndex
值,并且当您希望将其重置回顶部dataGridView1.FirstDisplayedScrollingRowIndex=值时
编辑
或者只需设置dataGridView1.FirstDisplayedScrollingRowIndex=0