zoukankan      html  css  js  c++  java
  • 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();
            }

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

  • 相关阅读:
    java自定义注解教程
    java8 LocalDateTime时间格式化
    java8新特性Stream用法详解
    java将数组转换成list集合
    elestaticsearch原生写法创建mapping
    springboot-mybatis-plus生成器
    jQuery.bind() 函数详解
    CSS3 中的 rem 值与 px 之间的换算
    console.log的应用
    JQuery中$(document)是什么意思有什么作用
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/4442306.html
Copyright © 2011-2022 走看看