用重绘的滚动条控制ListBox的滚动

更新时间:2023-06-30 09:50:38 阅读: 评论:0

用重绘的滚动条控制ListBox的滚动
查了很多资料,都找不到直接重写ListBox滚动条的方法,只能曲线救国,先自己重绘一个带皮肤的滚动条,然后让它取代ListBox现有的滚动条.
老习惯,先传个效果图,你觉得感兴趣就继续看下去,不喜欢的话就此打住,懒得耽误你宝
贵的时间,嘿嘿
注意,此图中的滚动条宽度明显小于ListBox本身滚动条的宽度,我目前只顾着实现功能了,
毕竟,宽度调整相当简单哈。
下面简单介绍下重绘系统滚动条的详细步骤:
1.在项目中添加新项--用户控件,我们命名为CustomScrollbar.cs
2.准备几张图片添加进项目资源作为滚动条重绘时要用的背景,我用的图片如下:
软件测试的流程
大蒜炒香肠
    uparrow.png资源名称为uparrow  ,滚动条的上箭头
    ThumbBottom.png资源名称为ThumbBottom  ,滚动条中间滑道的背景
    ThumbMiddle.png资源名称为ThumbMiddle  ,滚动条的中间的拖动块
    downarrow.png资源名称为downarrow  ,滚动条的下箭头
3.然后就是利用上面图片做背景重画滚动条背景了,直接给出CustomScrollbar.cs的代码吧
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using System.Diagnostics;
namespace Winamp
{
    [Designer(typeof(ScrollbarControlDesigner))]
    public partial class CustomScrollbar : UrControl
    {
        protected Color moChannelColor = Color.Empty;
        protected Image moUpArrowImage = null;//上箭头
        //protected Image moUpArrowImage_Over = null;
        //protected Image moUpArrowImage_Down = null;中小学心理健康教育
        protected Image moDownArrowImage = null;//下箭头
        //protected Image moDownArrowImage_Over = null;
        //protected Image moDownArrowImage_Down = null;米兰小铁匠
        protected Image moThumbArrowImage = null;
        protected Image moThumbTopImage = null;第八书包
        protected Image moThumbTopSpanImage = null;
        protected Image moThumbBottomImage = null;
        protected Image moThumbBottomSpanImage = null;
        protected Image moThumbMiddleImage = null;
        protected int moLargeChange = 10;
        protected int moSmallChange = 1;
中青班
        protected int moMinimum = 0;
        protected int moMaximum = 100;
死鱼是什么意思啊        protected int moValue = 0;
        private int nClickPoint;
        protected int moThumbTop = 0;
        protected bool moAutoSize = fal;
        private bool moThumbDown = fal;
        private bool moThumbDragging = fal;
        public new event EventHandler Scroll = null;
        public event EventHandler ValueChanged = null;
        private int GetThumbHeight()
        {
            int nTrackHeight = (this.Height - (UpArrowImage.Height + DownArrowImage.Height));
            float fThumbHeight = ((float)LargeChange / (float)Maximum) * nTrackHeight;
            int nThumbHeight = (int)fThumbHeight;
            if (nThumbHeight > nTrackHeight)
万圣节亲子活动
            {
                nThumbHeight = nTrackHeight;
                fThumbHeight = nTrackHeight;
            }
            if (nThumbHeight < 56)
            {
                nThumbHeight = 56;
                fThumbHeight = 56;
            }
            return nThumbHeight;
        }
        public CustomScrollbar()
        {
            InitializeComponent();
            SetStyle(ControlStyles.ResizeRedraw, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.DoubleBuffer, true);
            moChannelColor = Color.FromArgb(51, 166, 3);
            UpArrowImage = BASSSkin.uparrow;//上箭头
            DownArrowImage = BASSSkin.downarrow;//下肩头
            ThumbBottomImage = BASSSkin.ThumbBottom;
            ThumbMiddleImage = BASSSkin.ThumbMiddle;
            this.Width = UpArrowImage.Width;//18px
            ba.MinimumSize = new Size(UpArrowImage.Width, UpArrowImage.Height + DownArrowImage.Height + GetThumbHeight());
        }
        [EditorBrowsable(EditorBrowsableState.Always), Browsable(true), DefaultValue(fal), Category("Behavior"), Description("LargeChange")]
        public int LargeChange
        {
            get { return moLargeChange; }
            t
            {
                moLargeChange = value;
                Invalidate();
            }
        }
        [EditorBrowsable(EditorBrowsableState.Always), Browsable(true), DefaultValue(fal), Category("Behavior"), Description("SmallChange")]
        public int SmallChange
        {
            get { return moSmallChange; }
            t
            {
                moSmallChange = value;
                Invalidate();
            }
        }
        [EditorBrowsable(EditorBrowsableState.Always), Browsable(true), DefaultValue(fal), Category("Behavior"), Description("Minimum")]

本文发布于:2023-06-30 09:50:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1061410.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:背景   重绘   图片   资源   添加   系统   懒得
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图