c语言鼠标滚动条,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 < )

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

}

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

BEX5下实现鼠标滚动滚动条

使用前提: 页面内容过多,默认的滚动条太难看,在不引入滚动条插件情况下让界面不使用滚动条,又能通过鼠标滚动 实现步骤: 1 在会出现滚动条的组件上设置隐藏滚动条 overflow:hidden; 2 ...

纯css解决div隐藏浏览器原生滚动条,但保留鼠标滚动效果的问题

当我们的内容超出了我们的div,往往会出现滚动条,影响美观.尤其是当我们在做一些导航菜单的时候.滚动条一出现就破坏了UI效果.  我们不希望出现滚动条,也不希望超出去的内容被放逐,就要保留鼠标滚动的效 ...

纯css,div隐藏滚动条,保留鼠标滚动效果。

示例1: html,body { height: 100%; } body { overflow: hidden; } .full-screen { position: relative; width ...

js 鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层异步加载模式

js用处:在做商城时,首页图片太多,严重影响首页打开速度,所以我们需要用到异步加载楼层.js名称:鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层模式js解释:1.用于商城的楼层内容异步加载,滚动条 ...

JavaScript一个鼠标滚动事件的实例

VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法

原文:VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/ar ...

delphi 如何让ScrollBox的内容与滚动条一起实时滚动

delphi 如何让ScrollBox的内容与滚动条一起实时滚动 拖动滚动条后只有释放鼠标键,ScrollBox的内容才会滚动到实际位置,不爽.请问高人,怎样才能使拖动ScrollBox的滚动条的同时 ...

原生js和jquey获取窗口宽高,滚动条,鼠标位置总结

JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度   alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height( ...

js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写

js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写 一.总结 一句话总结:滚动事件scroll(),浏览器窗口调整监听resize(),思考好监听对象. 1.滚动事件scroll()的监听对象是 ...

随机推荐

Python Socket 编程——聊天室示例程序

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

【leetcode】 Interleaving String &lpar;hard&rpar;

Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...

Quartz:ERROR threw an unhandled Exception

详细的错误信息如下: -- ::] ERROR org.quartz.core.JobRunShell: - Job group1.job1 threw an unhandled Exception: ...

java BigInteger类的用法

import java.math.BigInteger; Scanner in = new Scanner(System.in); BigInteger x1 = new BigInteger(&qu ...

Cannot generate SSPI context---MS SQL ERROR

http://www.cnblogs.com/newr2006/archive/2011/08/25/2153253.html Additional error information from SQ ...

分析DuxCms之AdminUserModel

/** * 获取信息 * @param array $where 条件 * @return array 信息 */ public function getWhereInfo($where) { ret ...

oracle 压力测试工具benchmarksql

TPC-C测试 TPC-C 于 1992 年 7 月 23 日认可为新的基准测试.TPC(Transaction Processing Performance Council,事务处理性能委员会)-C ...

Linux shell 菜鸟学习笔记&period;&period;&period;&period;

20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...

双线程 线性dp 传纸条

/* 两种做法:一是暴力dp[i][j][k][l] 二是以走的步数k作为阶段, dp[k][i][j]表示走到第k步,第一个人横坐标走到i,第二个人横坐标走到j 可以以此推出第第一个人的坐标为[i, ...

jQuery跨域调用Web API

我曾经发表了一篇关于如何开发Web API的博客,链接地址:http://www.cnblogs.com/guwei4037/p/3603818.html.有朋友说开发是会开发了,但不知道怎么调用啊? ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用C语言中的图形库来实现在LCD上显示滚动条。具体实现方法可以参考以下步骤: 1. 初始化LCD屏幕,设置屏幕大小和分辨率。 2. 创建一个滚动条的结构体,包括滚动条的位置、大小、颜色等属性。 3. 在LCD屏幕上绘制滚动条,可以使用图形库中的绘图函数来实现。 4. 监听用户的滚动操作,根据用户的操作来更新滚动条的位置和显示内容。 以下是一个简单的示例代码: #include <graphics.h> struct scrollbar { int x, y; // 滚动条的位置 int width, height; // 滚动条的大小 int color; // 滚动条的颜色 int min_value, max_value; // 滚动条的取范围 int cur_value; // 当前滚动条 }; void draw_scrollbar(struct scrollbar *sb) { setcolor(sb->color); rectangle(sb->x, sb->y, sb->x + sb->width, sb->y + sb->height); int bar_height = sb->height * (sb->cur_value - sb->min_value) / (sb->max_value - sb->min_value); setfillstyle(SOLID_FILL, sb->color); bar(sb->x, sb->y + bar_height, sb->x + sb->width, sb->y + sb->height); } int main() { initwindow(640, 480, "LCD Scrollbar"); struct scrollbar sb = {100, 100, 20, 200, RED, 0, 100, 50}; draw_scrollbar(&sb); while (!kbhit()) { // 监听用户的滚动操作 if (ismouseclick(WM_MOUSEMOVE)) { int y = mousey(); if (y < sb.y) { sb.cur_value = sb.min_value; } else if (y > sb.y + sb.height) { sb.cur_value = sb.max_value; } else { sb.cur_value = sb.min_value + (y - sb.y) * (sb.max_value - sb.min_value) / sb.height; } cleardevice(); draw_scrollbar(&sb); delay(100); } } closegraph(); return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值