如何检测WinForms Panel是否已滚动到最后?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测WinForms Panel是否已滚动到最后?相关的知识,希望对你有一定的参考价值。

我正在开发一个WinForms应用程序,其中有一个包含一些用户控件的面板。当面板第一次加载时,它显示10个用户控件。但是当它完全向下滚动时,它应该加载并在面板的末尾添加更多用户控件。我试图使用此代码实现此目的:

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

它只是一个试验。我不知道这个NewValue究竟意味着什么。那么,请告诉我如何完成这项任务?

答案

MSDN很好地介绍了这个案例。你看过了吗?

请记住滚动条的奇怪行为:用户永远无法达到其Maximum值。阅读ScrollBar.Maximum MSDN帮助页面中的备注。

另一答案

正如其他人所提到的,滚动条永远不会达到其最大值,这是由于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。

另一答案

此函数必须放在静态类中。

public static bool IsScrolledDown(this ScrollableControl c) {
    return !c.VerticalScroll.Visible || c.VerticalScroll.Value == c.VerticalScroll.Maximum - c.VerticalScroll.LargeChange + 1;
}
另一答案
if(topicContainer.VerticalScroll.Value == topicContainer.VericalScroll.Maximum)
{


}

以上是关于如何检测WinForms Panel是否已滚动到最后?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测滚动到水平 UICollectionView 的末尾

jquery如何让滚动条滚动到最底部

JQ 如何判断横向滚动条到最右侧

解决Ext 4.0.7 tree.Panel横向不出滚动条,纵向滚动条失效的问题

Selenium WebDriver如何使滚动条滚动到最元素位置

winform panel 如何添加滚动条