winform VScrollBar ,HScrollBar的使用

最近项目里要写GDI+其中就有一个用外部ScrollBar代替 dataGridView1内部的ScrollBar的问题。

实现的方式是用自定义控件盖住dataGridView内部的ScrollBar。

本文主要讲:scrollBar的使用,达到的效果如图,外部的scrollBar能够和dataGridView或者系统的滚动条一样精确的滚动,一样精确的长度:

1 是dataGridView内部的滚动条,相当精确了,滚动到最右边正好所有数据都能显示出来,比例大概是: 拖动条的长度:scrollBar长度 = 显示出的数据的长度:所有数据的长度。

2.是我实现的外部的VScrollBar.基本满足上述的比例。

不需要这么精确的,只需要知道ScrollBar的属性以及如何简单使用的请移步:

http://blog.csdn.net/truelove12358/article/details/17309143

下面是实现的代码:

关键是如何设置属性及滚动事件,

 private void InitScrollBar()
        {
            hScrollBar1.Dock = DockStyle.Bottom;
            int count = dataGridView1.ColumnCount;
            int gridWidth = 0;
            for (int k=0; k < count; k++)
            {
                gridWidth += dataGridView1.Columns[k].Width;
            }
//关键代码位置
            hScrollBar1.Maximum = gridWidth;
            hScrollBar1.Minimum = 0;
            hScrollBar1.SmallChange = gridWidth / count;
            hScrollBar1.LargeChange = dataGridView1.Width - 5;//微调这里的 5

            this.dataGridView1.ScrollBars = ScrollBars.Both;
            //this.hScrollBarEx1.Scroll += new ScrollEventHandler(hScrollBarEx1_Scroll);
            this.hScrollBar1.Scroll +=new ScrollEventHandler(hScrollBar1_Scroll);

          }

        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {//关键代码位置
           this.dataGridView1.HorizontalScrollingOffset = hScrollBar1.Value;          Application.DoEvents();
           
         }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值