2013-10-30 23 views
0

我正在开发一个WinForms应用程序,其中有一个包含一些用户控件的面板。当面板首次加载时,会显示10个用户控件。但是当它完全向下滚动时,它应该在面板的末尾加载和附加更多的用户控件。我正尝试使用此代码实现此目的:如何检测WinForms Panel是否滚动到底?

private void topicContainer_Scroll(object sender, ScrollEventArgs e) 
{ 
     if (e.NewValue== topicContainer.VerticalScroll.Value) 
       MessageBox.Show("Topics load here"); 
} 

它只是一个试用版。我不知道这个NewValue实际上是什么意思。那么,你能告诉我如何完成我的这项任务吗?

回答

3

MSDN涵盖的情况相当好。你检查过它吗?

但请记住关于滚动条的怪异的行为:用户是永远无法达到其Maximum。阅读ScrollBar.Maximum MSDN帮助页面中的注释。

+0

你是正确的。当我达到最后的目的时,那里的“价值”是1325,但它的最大值是1789.你能给我提供任何可用的教程吗?我已经阅读过MSDN文章,但对此并没有太多帮助。 –

+2

@AishwaryaShiva如果我正确理解MSDN文章,用户可以达到的最大值是Maximum-LargeChange值。检查,如果达到的值是对应的,Maximum和LargeChange(应该有:)) – Spook

-1
if(topicContainer.VerticalScroll.Value == topicContainer.VericalScroll.Maximum) 
{ 


} 
+0

它不起作用。由于@Spook表示,“用户永远无法达到其最大值”,所以通过使用您的代码,当我到达最后一个结束时,“价值”是1325,但它的最大值是1789 –

4

正如其他人所说,滚动条从来不会达到它的最大价值,这是由于LargeChange属性越来越计入公式:

private void topicContainer_Scroll(object sender, ScrollEventArgs e) 
{ 
    VScrollProperties vs = topicContainer.VerticalScroll; 
    if (e.NewValue == vs.Maximum - vs.LargeChange + 1) { 
    // scrolled to the bottom 
    } 
} 

+ 1对于从零开始的偏移量。如果将AutoScrollMinSize height属性设置为500,则最大值实际上是499.