如何计算系统滚动条的SmallChange值

时间:2017-04-10 08:59:58

标签: c# winforms scroll scrollbar

我使用 GetScrollInfo 本机方法来获取控件的滚动值,并将值设置为我的自定义滚动条。我可以使用SCROLLINFO找到系统滚动条的最小值,最大值,值和大的变化。但我无法获得 SmallChange 值。

代码段:

GetScrollInfo(control.Handle, SB_HORZ, ref hScrollInfo)

private void UpdateScrollBarValues(ScrollBarBase bar, ref SCROLLINFO scrollInfo)
    {
        bar.Minimum = scrollInfo.nMin;
        bar.Maximum = scrollInfo.nMax;
        bar.Value = scrollInfo.nPos;
        bar.LargeChange = scrollInfo.nPage;
        //How can we calculate or set the 
        //bar.SmallChange = ??
    }

是否有其他替代方法可以找到系统滚动条的小变化?

1 个答案:

答案 0 :(得分:1)

按其中一个箭头键或单击其中一个滚动条按钮,Value属性将根据SmallChange属性中设置的值进行更改。

SmallChange(以及LargeChange)属性是相对于用户看到的视图大小设置的,而不是包括看不见的部分在内的总大小。请参阅MSDN

因此您可以根据自己的需要设置一个值,例如

bar.SmallChange = scrollInfo.nPage/20; 

另一个so post进行完美计算。