c# - 如何检测 WinForms 面板是否滚动到末尾?

标签 c# winforms user-controls scroll panel

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

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

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

最佳答案

正如其他人所提到的,滚动条永远不会达到其最大值,这是由于 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 高度属性设置为 500,则最大值实际上为 499。

关于c# - 如何检测 WinForms 面板是否滚动到末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682312/

相关文章:

c# - 用户控件形式的call方法

c# - 使用键/值解析行的 LINQ 方法

c# - 从 C++ 调用 C# dll

c# - 将希腊字符转换为终端十六进制字体

c# - 将数据库中的字符串与发布的字符串进行比较

winforms - ObservableCollection(Of T) vs BindingList(Of T)?

c# - 自定义本地化 BooleanConverter

c# - 在 Windows 窗体应用程序中嵌入 Teamviewer

c# - 具有自动高度属性的用户控件

c# - 如何在自定义控件中启用设计支持?