Winform 的 VScrollBar参数详解——为啥设置了最大值却滚动不到?
最近在写一个SSH的控制台应用,因为自带的文本编辑框总是不尽如人意,另外本着学习新知识的原因,打算重写一个控件。然后就用到了这个VScrollBar纵向滚动条控件。
先上图:
- **Maxinum :**可滚动的最大值,网上都是如此描述,导致误解。实际是Maxinum并不是“可滚动的最大值”,而应该是滚动条总高度代表的“值”,
也就是说Maxinum - Mininum = 可滚动的值+LargeChange
- **Mininum:**也就是滚动条最低端的值,一般写0就行
- **LargeChange:**滚动条里面滑块的值,一般就是屏幕可显示区域的值。
-
Value: 滚动条滑块当前的值,他可以滚动到的最大值是
Maxinum-LargeChange+1
,这个最大值才是真正意义上的可滚动区域
。这就是为啥有人问
为啥设置了最大值却滚动不到?
- 其实还有个SmallChange的值,应该代表的是最小可滚动的范围的值。例如如果以行为单位,那就是1。如果以像素为单位,那就是一行的行高。我不是很确定。
举个栗子:
现在有总共1000行数据可以显示,然后一屏最多显示100条。当前滚动条在最底部。
那么
- Maxinum 应该设置
999
//为了计算方便,1000从0开始,最大索引值是999 - Mininum 应该设置
0
- LargeChange 应该设置
100
- Value 应该设置
999 -100+1 = 9000
- SmallChange 则设置为
1
那么你当前的显示数据就应该从索引900开始知道999一共100条*(包括索引900的这条数据哦)*