• xtraScrollableControl 滚动条随鼠标滚动


    代码如下

    //
    
    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();
            }

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

  • 相关阅读:
    WCF
    WCF
    C#
    ASP.NET MVC
    WCF
    关于函数的参数
    关于函数的return
    移动Web开发技巧汇总(转)
    关于reset.css的那些事
    关于iphone自动播放音频和视频问题的解决办法
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/4442306.html
Copyright © 2020-2023  润新知