码迷,mamicode.com
首页 > 其他好文 > 详细

xtraScrollableControl 滚动条随鼠标滚动

时间:2015-04-20 20:34:01      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:

代码如下

//

using System;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace WindowsFormsApplication1 {
    public class ScrollHelper {

        readonly XtraScrollableControl _scrollableControl;

        public ScrollHelper(XtraScrollableControl scrollableControl) { _scrollableControl = scrollableControl; }

        public void EnableScrollOnMouseWheel() { _scrollableControl.VisibleChanged += OnVisibleChanged; }

        void OnVisibleChanged(object sender, EventArgs e) {
            _scrollableControl.Select();
            UnsubscribeFromMouseWheel(_scrollableControl.Controls);
            SubscribeToMouseWheel(_scrollableControl.Controls);
        }

        public void SubscribeToMouseWheel(Control.ControlCollection controls) {
            foreach (Control ctrl in controls) {
                ctrl.MouseWheel += OnMouseWheel;
                SubscribeToMouseWheel(ctrl.Controls);
            }
        }

        public void UnsubscribeFromMouseWheel(Control.ControlCollection controls)
        {
            foreach (Control ctrl in controls) {
                ctrl.MouseWheel -= OnMouseWheel;
                UnsubscribeFromMouseWheel(ctrl.Controls);
            }
        }

        void OnMouseWheel(object sender, MouseEventArgs e) {
            DevExpress.Utils.DXMouseEventArgs.GetMouseArgs(e).Handled = true;
            var scrollValue = _scrollableControl.VerticalScroll.Value;
            var largeChange = _scrollableControl.VerticalScroll.LargeChange;
            if (e.Delta < 0)
                _scrollableControl.VerticalScroll.Value += _scrollableControl.VerticalScroll.LargeChange;
            else
                if (scrollValue < largeChange) { _scrollableControl.VerticalScroll.Value = 0; }
                else { _scrollableControl.VerticalScroll.Value -= largeChange; }
        }

        public void DisableScrollOnMouseWheel() {
            _scrollableControl.VisibleChanged -= OnVisibleChanged;
            UnsubscribeFromMouseWheel(_scrollableControl.Controls);
        }

    }
}

运行代码

 

private ScrollHelper _scrollHelper;


        public 构造函数()
        {
            InitializeComponent();

            _scrollHelper = new ScrollHelper(xtraScrollableControl1);
            _scrollHelper.EnableScrollOnMouseWheel();
        }

不过如果控件没有获得焦点 不起作用

xtraScrollableControl 滚动条随鼠标滚动

标签:

原文地址:http://www.cnblogs.com/DoNetCShap/p/4442306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!