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

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

  • 相关阅读:
    基于ARM的指纹采集仪的设计与实现
    基于单片机和CPLD的数字频率计的设计
    转来的
    单片机式语音播报伏特表
    汽车驾驶模拟器单片机系统设计
    基于AT89C51的智能矿井环境质量监控系统
    我的理解OpenAPI原理
    关联规则中的支持度与置信度
    LVS-NAT实现负载均衡
    在IIS上部署Analysis Services
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/4442306.html
Copyright © 2011-2022 走看看