解决SourceGrid在某些系统上无法用鼠标滚轮滚动的问题

4.40版源码,找到SourceGrid/SourceGrid/Common/CustomScrollControl.cs 这个文件

 

定位 CustomScrollWheel() 方法,把if条件判断去掉。或者把rotationDelta的值做相应调整也行。

 

改后代码如下:

public virtual void CustomScrollWheel(int rotationDelta)
        {
            //if (rotationDelta >= 120 || rotationDelta <= -120)
            //{
                if (VScrollBarVisible)
                {
                    Point current = CustomScrollPosition;
                    int newY = current.Y +
                        SystemInformation.MouseWheelScrollLines * VScrollBar.SmallChange * -Math.Sign(rotationDelta);

                    //check that the value is between max and min
                    if (newY < 0)
                        newY = 0;
                    if (newY > MaximumVScroll)
                        newY = MaximumVScroll;

                    CustomScrollPosition = new Point(current.X, newY);
                }
            //}
        }

 

SourceGrid为了避免过于频繁的调用滚动操作,加了这个判断,但没考虑到有些鼠标的MouseWheel一次滚动是小于这个值的。

 

搜不到有人记录过这个问题,随记在此,希望遇到同样问题的同学能搜到。

posted @ 2016-04-07 10:21  程序员海风  阅读(342)  评论(0编辑  收藏  举报