以(yǐ)下是(shì)这两个(gè)控件使(shǐ)用的(de)关键(jiàn)代码(mǎ):
privatevoid FrmCustomerManagement_Load(object sender, EventArgs e)
{
dataGridView1.ScrollBars= ScrollBars.None;//关datagridviwe自带滚动条
vScrollBar1.Maximum =dataGridView1.Rows.Count - 1;
vScrollBar1.Minimum = 1;
vScrollBar1.SmallChange = 1;
vScrollBar1.LargeChange = 1; //Large随便了(le),我都设定的是1
hScrollBar1.Dock =DockStyle.Bottom;
int count =dataGridView1.ColumnCount;
int gridWidth = 0;
for (int k = 0; k < count; k++)
{
gridWidth +=dataGridView1.Columns[k].Width;
}
//关键代(dài)码位置
hScrollBar1.Maximum = gridWidth;
hScrollBar1.Minimum = 0;
hScrollBar1.SmallChange = gridWidth/ count;
hScrollBar1.LargeChange =dataGridView1.Width - 5;//微调这里的 5
this.dataGridView1.MouseWheel += newMouseEventHandler(OnMouseWheel);//容器获得焦点(diǎn)的状况的滑动鼠标事件
}
//鼠(shǔ)标滑轮事件
void OnMouseWheel(object sender,MouseEventArgs e)
{
if (e.Delta > 0)
{
if ((vScrollBar1.Value - 1)< vScrollBar1.Minimum)
{
vScrollBar1.Value =vScrollBar1.Minimum;
}
else
{
vScrollBar1.Value -= 1;
}
}
else
{
if ((vScrollBar1.Value + 1)> vScrollBar1.Maximum)
{
vScrollBar1.Value =vScrollBar1.Maximum;
}
else
{
vScrollBar1.Value += 1;
}
}
//MessageBox.Show(vScrollBar1.Value.ToString());
vScrollBar1_Scroll(null, null);
}
//控件的scrill事(shì)件(jiàn)
private void vScrollBar1_Scroll(objectsender, ScrollEventArgs e)
{
dataGridView1.FirstDisplayedScrollingRowIndex = vScrollBar1.Value;
}
private void hScrollBar1_Scroll(objectsender, ScrollEventArgs e)
{
this.dataGridView1.HorizontalScrollingOffset = hScrollBar1.Value;Application.DoEvents();
}
整个实现思路就是先设置(zhì)控件的maxmum和minmum,也就是其控件所(suǒ)代表的(de)范围,然后设置LargeChange,也就是(shì)滚动大小
vScrollBar1控件是没滑动控件获取它的(de)value值,然后根据value值定义dataGridView1的(de)显示的第一行的下(xià)标。
hScrollBar1控件(jiàn)也是根据(jù)其value值(zhí)设置dataGridView1的水平滚动的像素数。
其(qí)中的OnMouseWheel方法(fǎ)是监控鼠标的上下滑动,然后取值再执行scroll时(shí)间(jiān)实(shí)现滚动效果。
下为完(wán)成图(tú):


文章内容(róng)来自网(wǎng)络,版(bǎn)权归原作(zuò)者所(suǒ)有(yǒu),如有侵权请(qǐng)联系管理员删除(chú)。