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 < )
_scrollableControl.VerticalScroll.Value += _scrollableControl.VerticalScroll.LargeChange;
else
if (scrollValue < largeChange) { _scrollableControl.VerticalScroll.Value = ; }
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 滚动条控件随鼠标滚动的更多相关文章

  1. 解决ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效

    C# 中,两个ScrollViewer嵌套在一起或者ScrollViewer里面嵌套一个DataGrid.ListBox.Listview(控件本身有scrollviewer)的时候,我们本想要的效果 ...

  2. MFC编程入门之二十六(常用控件:滚动条控件ScrollBar)

    回顾上一节,讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框和组合 ...

  3. VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)

    回顾上一节,鸡啄米讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框 ...

  4. VS2010-MFC(常用控件:滚动条控件Scroll Bar)

    转自:http://www.jizhuomi.com/software/191.html 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框和组合框设置了相应属性 ...

  5. 自己开发基于c#的垂直滚动条控件

    由于Visual Studio工具箱中自带滚动条控件外观太老,而且没有颜色外观属性可设置. 所以自己就试着开发一个垂直的滚动条,它可以用来控制TextBox的滚动. 由于代码比较多,源文件已经打包到网 ...

  6. javascript控件开发之滚动条控件

    首先,基于行前几篇开发的的框架,我们在目录 component\ui\下添加文件 com.ui.scrollBar.js, 在文件中定义com.ui.scrollBar类,继承com.ui.windo ...

  7. Qt列表等控件实现平滑滚动&deepin启动器存在的问题

    Qt列表等控件实现平滑滚动 Qt自带的的列表控件是不能平滑滚动的,但如果滚动速度快的话很容易引起视线丢失,体验效果很差.本篇主要讲述如何在Qt中对列表控件加入平滑滚动.文中以QScrollArea控件 ...

  8. WPF ItemsControl 控件支持鼠标滚轮滑动

    此文章意在解决在WPF中ItemsControl类型的集合控件支持鼠标滚轮操作,并可控制滚动的速度. 第一步:给ItemsControl添加滚轮事件. this.listBox.AddHandler( ...

  9. duilib List控件,横向滚动时列表项不移动或者显示错位的bug的修复

    转载请说明出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42264673 关于这个bug的修复我之前写过一篇博客,连接为:http:/ ...

随机推荐

  1. Java多线程基础(一)

    一.基本概念 线程状态图包括五种状态 1.新建状态(New):线程对象被创建后,就进入新建状态.例如,Thread thread=new Thread(); 2.就绪状态(Runnable):也被称为 ...

  2. C++_Eigen函数库用法笔记——Matrix and Vector Arithmetic

    Addition and subtraction Scalar multiplication and division Transposition Matrix-matrix and matrix-v ...

  3. java随机生成简体中文取指定长度随机简体中文实用方法

    /**     * 获取指定长度随机简体中文     * @param len int     * @return String     */    public static String getR ...

  4. IE浏览器模式设置

    文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE ...

  5. WP8版微信5.4发布 新增夜间模式 暂没小视频

    经过近一个月的内测,WP8版的微信终于更新了v 5.4版本.新增聊天中的照片墙.识别图片二维码.夜间模式等功能,还对资源占用情况进行了优化,让程序可以更流畅的在低配置设备上运行. 不过,WP8版微信5 ...

  6. MFC 中控件的启用与禁用

    启用和禁用控件可以调用CWnd::EnableWindow 函数. BOOL EnableWindow(BOOL bEnable = TRUE); 判断控件是否可用可以调用 CWnd::IsWindo ...

  7. LVS负载均衡集群服务搭建详解(一)

    LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均 ...

  8. 当前标识(IIS APPPOOL\DefaultWebSite)没有对“C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files“的写访问权限

    将C#写的webservice发布到IIS后,通过浏览器访问测试,出现如下错误: 根据提示:对Tempory ASP.NET Files没有写访问权限,在资源管理其中定位到这个地址,发现没有这个文件夹 ...

  9. hiho #1283 hiho密码 [Offer收割]编程练习赛3

    #1283 : hiho密码 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho根据最近在密码学课上学习到的知识,开发出了一款hiho密码,这款密码的秘钥是这样生成的 ...

  10. Coursera台大机器学习课程笔记10 -- Linear Models for Classification

    这一节讲线性模型,先将几种线性模型进行了对比,通过转换误差函数来将linear regression 和logistic regression 用于分类. 比较重要的是这种图,它解释了为何可以用Lin ...