如何滚动直到它碰到底部,然后重置到顶部?

时间:2014-08-11 22:53:23

标签: c# winforms datagridview

使用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语句。我知道我在这里错过了一些逻辑。我做错了什么?

更新:得到了huangda的答案,并且还更新了我上面的当前代码,但它仍然看起来很麻烦。有时它已经到达底部,但它没有滚动到顶部。我有时需要等待1到5&#34; + = 5&#34;更多的增量,然后它将滚动到顶部也启动else语句。

我想问一个跟进问题。在这种情况下使用dataGridView1.RowCount真的是这样吗?或者有什么更好的我可以用来比较我的scrollPosition?

2 个答案:

答案 0 :(得分:1)

这是一个非常明显的问题:如果scrollPosition == dataGridView1.RowCount超过scrollPositiondataGridView.RowCount可能不正确,因为它每次增长5次。

可能的解决方法是更改​​&#34; ==&#34;到&#34;&gt; =&#34;,即:

if(scrollPosition >= dataGridView1.RowCount)
{
    //do your stuff
}

答案 1 :(得分:0)

据我所知你无法达到最小/最大的实际dgv滚动条,因此你无法设置它。

如果huda有什么建议可以,那么当您的表单加载时会获得 FirstDisplayedScrollingRowIndex 值,并且当您想要将其重置为顶部时 dataGridView1.FirstDisplayedScrollingRowIndex = value < /强>

编辑 或者只设置dataGridView1.FirstDisplayedScrollingRowIndex = 0