使用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?
答案 0 :(得分:1)
这是一个非常明显的问题:如果scrollPosition == dataGridView1.RowCount
超过scrollPosition
,dataGridView.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