0

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

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

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

4

4 回答 4

5

As others have mentioned, the scrollbar never does reach its Maximum value, and that is due to the LargeChange property getting factored into the equation:

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

The + 1 is for the zero-based offset. If you set the AutoScrollMinSize height property to 500, the Maximum value is actually 499.

于 2013-10-30T14:27:34.963 回答
3

MSDN 很好地涵盖了这个案例。你检查过吗?

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

于 2013-10-30T12:35:00.637 回答
1

这个函数必须放在一个静态类中。

public static bool IsScrolledDown(this ScrollableControl c) {
    return !c.VerticalScroll.Visible || c.VerticalScroll.Value == c.VerticalScroll.Maximum - c.VerticalScroll.LargeChange + 1;
}
于 2019-04-12T16:54:37.303 回答
-1
if(topicContainer.VerticalScroll.Value == topicContainer.VericalScroll.Maximum)
{


}
于 2013-10-30T12:34:26.633 回答