返回首页

VB中使DataGrid控件支持鼠标滚动操作

时间:2012-06-17 15:29来源:知行网www.zhixing123.cn 编辑:麦田守望者

默认情况下VB中的DataGrid控件是不支持鼠标滚动的,但可以通过API函数来实现,具体如下:

 

'在工程中新建一模块,并将以下代码加入到该的模块中(即module1.bas)

Public tmpDataGrid As DataGrid '用与确定要实现滚动的DataGrid控件
Public tmpDataGridRowNum As Integer '有多少行数据


Public Const GWL_WNDPROC = (-4)
Public Const WM_COMMAND = &H111
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MOUSEWHEEL = &H20A

Public Oldwinproc As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Public Function DataGridScroll(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'该函数用于实现鼠标滚动
Select Case wMsg
Case WM_MOUSEWHEEL
Select Case wParam
Case -7864320 '向下滚
If tmpDataGrid.Row < tmpDataGridRowNum - tmpDataGrid.FirstRow Then
tmpDataGrid.Row = tmpDataGrid.Row + 1
End If

Case 7864320 '向上滚
If tmpDataGrid.Bookmark > 1 Then
tmpDataGrid.Bookmark = tmpDataGrid.Bookmark - 1
End If

End Select

End Select
DataGridScroll = CallWindowProc(Oldwinproc, hWnd, wMsg, wParam, lParam)
End Function


'在具体包含要实现滚动功能的DataGrid控件的窗体中加入如下代码,并一定记得把DataGrid1的属性页中的

'拆分选项卡中的选取框样式改为 2-debhighlightCell

 

Private Sub DataGrid1_GotFocus() '获取焦点时候
Oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
Set tmpDataGrid = Me.DataGrid1
tmpDataGridRowNum = adodc1.Recordset.RecordCount '获取记录源中记录的条数
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf DataGridScroll
End Sub

Private Sub DataGrid1_LostFocus() '失去焦点时候
SetWindowLong Me.hWnd, GWL_WNDPROC, Oldwinproc
End Sub

运行程序后在DataGrid控件中单击后(获取焦点),滚动看下,呵呵,是不是OK了!!

------分隔线----------------------------
标签(Tag):C# C#龙8娱乐官网手机版 c#基础教程 C#源代码 c#技巧
------分隔线----------------------------
推荐内容
  • SQL Server 2008 sa登录报18456错误的解决方法

    许多人用SQL Server用的时间长了会自动报18456错误,SQL Server 18456错误应该说很好...

  • Windows 2003 IIS如何启用Gzip压缩的方法

    经常看到网上有人提问说:开GZIP压缩有什么好处?Gzip开启以后会将输出到用户浏览器的...

  • IIS自定义404错误页面提示系统找不到指定的文件问题

    我们在IIS站点属性里面设置了自定义的404错误页面为一个文件之后,不知道为什么一直不...

  • 支持IPv4与IPv6双协议栈的Web服务器设计实践教程

    嵌入式Web技术因其跨平台的特点得到了广泛的应用[1]。用户只需要登录浏览器即可实现对...

  • SQL查询中回表对性能的影响

    运营反馈某个功能速度很慢,查了一下,定位到如下 SQL: select id from user where n...

  • 高校数据安全全过程管理实践教程

    《网络安全法》出台后,以法律的形式明确要求各类组织切实承担起保障数据安全的责任,...

  • 猜你感兴趣
  • 教育技术学动态
  • 教育技术学论文
  • 理论研究
  • 应用研究
  • 资源收藏
  • 百家观点
  • 英文文献
  • 中国电化教育
  • 电化教育研究
  • 中国远程教育
  • 开放教育研究
  • 现代教育技术
  • 远程教育杂志
  • 现代远距离教育
  • 中国教育信息化
  • 中国信息技术教育
  • 中小学信息技术
  • Flash龙8娱乐官网手机版
  • Photoshop龙8娱乐官网手机版
  • 3DMAX龙8娱乐官网手机版
  • AutoCAD龙8娱乐官网手机版
  • CorelDRAW龙8娱乐官网手机版
  • Matlab龙8娱乐官网手机版
  • 其他龙8娱乐官网手机版
  • .Net龙8娱乐官网手机版
  • Asp龙8娱乐官网手机版
  • Php龙8娱乐官网手机版
  • Jsp龙8娱乐官网手机版
  • Ajax龙8娱乐官网手机版
  • Android教程
  • 其他龙8娱乐官网手机版
  • Word教程
  • Excel教程
  • PowerPoint教程
  • Ubuntu教程
  • 其他教程
  • 课件下载
  • 软件下载
  • 视频教程下载
  • 其他下载
  • 教案大全
  • 试题大全
  • 课件大全
  • 其他大全
  • 人像摄影
  • 风光摄影