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

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

  • 相关阅读:
    当前打印机不可用,请选择其他打印机解决方案
    维修计划修改需要自动备份的数据库
    VNC修改黑名单过期时间
    Redis的下载与安装(Windows)
    RabbitMQ的安装与配置
    Minio
    Maven的下载与安装
    c#封装好多问题
    银河麒麟服务器V10
    jexus 服务器软件
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/4442306.html
Copyright © 2020-2023  润新知