最近项目里要写GDI+其中就有一个用外部ScrollBar代替 dataGridView1内部的ScrollBar的问题。c#
实现的方式是用自定义控件盖住dataGridView内部的ScrollBar。this
本文主要讲:scrollBar的使用,达到的效果如图,外部的scrollBar可以和dataGridView或者系统的滚动条同样精确的滚动,同样精确的长度:.net
1 是dataGridView内部的滚动条,至关精确了,滚动到最右边正好全部数据都能显示出来,比例大概是: 拖动条的长度:scrollBar长度 = 显示出的数据的长度:全部数据的长度。code
2.是我实现的外部的VScrollBar.基本知足上述的比例。blog
不须要这么精确的,只须要知道ScrollBar的属性以及如何简单使用的请移步:事件
http://blog.csdn.net/truelove12358/article/details/17309143get
下面是实现的代码:it
关键是如何设置属性及滚动事件,io
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(); }