【发布时间】:2011-07-27 08:12:02
【问题描述】:
我想在 winforms 中更改滚动条的实际条/拇指部分的大小,但我找不到这样做的方法。无论要滚动多少,拇指大约是实际滚动区域的 1/10。无论我必须向下滚动 1 行还是 1000 行,都是一样的。我希望它的大小可以根据要滚动的量来调整,或者至少使其达到滚动区域大小的 50%。
【问题讨论】:
我想在 winforms 中更改滚动条的实际条/拇指部分的大小,但我找不到这样做的方法。无论要滚动多少,拇指大约是实际滚动区域的 1/10。无论我必须向下滚动 1 行还是 1000 行,都是一样的。我希望它的大小可以根据要滚动的量来调整,或者至少使其达到滚动区域大小的 50%。
【问题讨论】:
from包含一些调整滚动的属性如:AutoScrollMargin, AutoScrollMinSize, AutoScrollOffset,另外还有HorizontalScroll和VerticalScroll,最后两个属性分别代表窗体的垂直和水平滚动条,它们也暴露了一些像Minimum, Maximum, SmallChange, LargeChange, Value.. 这样的属性,如果使用所有这些都不能满足您的要求,那么您应该使用自定义Scrollbar。将ScrollBar 添加到表单并禁用表单滚动条,并在向表单添加控件或更改其大小时调整自定义滚动条...
【讨论】:
VertiaclScroll属性,但是它的类型是VScrollProperties而不是VScrollBar! .因此,如果 VScrollProperties 的预定义属性和其他表单属性无法帮助您。那么你别无选择,只能使用自定义滚动条。
this.vScrollBar1.LargeChange = this.vScrollBar1.Maximum / 2; 将拇指更改为轨道长度的一半。
其实我明白了。 this.vScrollBar1.LargeChange = this.vScrollBar1.Maximum / 2; 将拇指更改为轨道长度的一半。
【讨论】:
滚动条控件的拇指条大小与该控件的ScrollBarName.Maximum 和ScrollBarName.LargeChange 值之间的差异成正比。
要使用ScrollBarName.LargeChange,ScrollBarName.Maximum 需要一个比例偏移值,以便滚动条控件在使用时按预期运行。以下示例演示了如何进行这种偏移计算以及如何将其应用于实际应用环境中。
偏移量计算:
ScrollBarName.Maximum = MyMaximum + MyLargeChange - 1 ' LargeChange Usage Offset Calcualtion
应用程序上下文:
'*** Using Simplified Values To Avoid Confusion ***
Dim ScrollBarName As New VScrollBar ' Or HScrollBar Control
Dim MyMaximum As Integer = 100 ' Your "off screen" calculated value
Dim MySmallChange As Integer = 10 ' MySmallChange <= MyLargeChange <= MyMaximum
Dim MyLargeChange As Integer = 50 ' MyLargeChange <= MyMaximum (Example produces thumbar sized {(MyLargeChange / ScrollBarName.Maximum) %} Clientsize.width
Me.controls.add(ScrollBarName) ' Add Your Control
ScrollBarName.Dock = DockStyle.Right ' Dock bottom for HScrollBar
ScrollBarName.SmallChange = MySmallChange
ScrollBarName.LargeChange = MyLargeChange
ScrollBarName.Maximum = MyMaximum + MyLargeChange - 1 ' LargeChange Usage Offset Calcualtion
ScrollBarName.Value = 20 ' The scrollBar movement value whereby ScrollBarName.Value <= MyMaximum
【讨论】: