C# 如何操作滚动条上的大变化和小变化来工作

C# 如何操作滚动条上的大变化和小变化来工作,c#,scrollbar,C#,Scrollbar,我在C#应用程序的单个窗口中有许多面板,我创建了两个滚动条,一个用于水平,一个用于垂直。这就是我目前拥有的: 我有一个变量,这是所有项目需要的总高度。 以下是我的滚动更改代码: for (int i = 0; i < this._splitMainView.Panel2.Controls.Count; i++) { this._splitMainView.Panel2.Controls[i].Location = new Point( 3 - _scrollBar

我在C#应用程序的单个窗口中有许多面板,我创建了两个滚动条,一个用于水平,一个用于垂直。这就是我目前拥有的:

我有一个变量,这是所有项目需要的总高度。 以下是我的滚动更改代码:

for (int i = 0; i < this._splitMainView.Panel2.Controls.Count; i++)
{
    this._splitMainView.Panel2.Controls[i].Location = new Point(
        3 - _scrollBarX.Value, 
        3 + (132 + 6) * (i - 2) - _scrollBarY.Value);
    this._splitMainView.Panel2.Controls[i].Refresh();
}
for(int i=0;i
滚动条的最大值是所有容器高度的总和,中间的空间和额外的几个像素

正如你从照片上看到的,它看起来不太好。即使这种情况下的最大值是50-100像素左右,看起来仍然有1000页长。当我更改SmallChange和LargeChange时,滚动条本身会变长,但不会达到最大像素。它将能够几乎在最后(取决于小变化和大变化值),并留下大约5-29像素的剩余。众所周知,看到一半是不好的


有人知道如何克服这个障碍或更好的方法来实现它吗?

为什么不让滚动条的最大值溢出(可见区域高度-面板高度)?然后只需将面板顶部设置为滚动条*-1的值。

是否有理由不使用AutoScroll属性