CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  控件

急!如何获取listview控件中鼠标指向项目的索引?

楼主prolq()2006-03-17 13:36:17 在 VB / 控件 提问

以前在listbox控件中可以声明  
  Public   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long  
  Public   Const   LB_ITEMFROMPOINT   =   &H1A9  
  然后在list控件的mousemove事件里面加入如下代码:  
  On   Error   GoTo   err  
  If   List1.listcount=   0   Then   Exit   Sub  
  Dim   poss   As   Long,   Indx   As   Long  
  poss   =   x   /   Screen.TwipsPerPixelX   +   y   /   Screen.TwipsPerPixelY   *   65536  
  Indx   =   SendMessage(List1.hwnd,   LB_ITEMFROMPOINT,   0,   ByVal   poss)  
  err:   Exit   Sub  
  其中Indx即是鼠标移动过程中指向的list项目的索引了。但是在listview控件中这套方法完全行不通,那么我又该如何在listview中实现类似功能呢?  
  其实我是想实现在listview中通过鼠标拖动项目功能(就像那些媒体播放器里面的列表一样),这就要知道当前鼠标指向项目的索引才行。以前在listbox中我已经很好地解决了这个问题,但换了控件却发现如此不同,自己百思不得其解,故来到高手云集的CSDN上请教,还忘大家一施援手了!谢谢 问题点数:60、回复次数:5Top

1 楼tztz520(午夜逛街)回复于 2006-03-17 13:42:47 得分 25

Private   Sub   ListView1_MouseMove(Button   As   Integer,   Shift   As   Integer,   X   As   Single,   Y   As   Single)  
  Dim   tempItem   As   ListItem  
  Set   tempItem   =   ListView1.HitTest(X,   Y)  
  If   Not   tempItem   Is   Nothing   Then  
          Debug.Print   tempItem.Index  
  End   If  
  end   subTop

2 楼tztz520(午夜逛街)回复于 2006-03-17 13:43:28 得分 0

就是HitTest方法就可以了Top

3 楼laviewpbt(人一定要靠自己)回复于 2006-03-17 15:47:18 得分 20

楼上是一种方法  
  如果想得到列,可以用  
  Private   Sub   ListView1_MouseDown(Button   As   Integer,   Shift   As   Integer,   X   As   Single,   Y   As   Single)  
  Dim   a   As   Single,   Column   As   Long,   i   As   Long,   row   As   String  
          a   =   X   -   ListView1.SelectedItem.Left  
          For   i   =   1   To   ListView1.ColumnHeaders.Count  
                  If   (ListView1.ColumnHeaders(i).Left   <=   a)   And   (a   <=   ListView1.ColumnHeaders(i).Left   +   ListView1.ColumnHeaders(i).Width)   Then  
                          Column   =   i  
                          Exit   For  
                  End   If  
          Next   i  
        Label1.Caption   =   "&Ecirc;ó±ê&Euml;ù&Ocirc;&Uacute;&Aacute;&ETH;:"   &   Column  
  End   Sub  
   
  Top

4 楼vansoft(Vansoft Workroom)回复于 2006-03-17 20:03:34 得分 15

以下代码是从我的实际工程中COPY出来的。  
  lvwContent是控件名。  
  常量和API申明,你自己用Google找一下。  
   
  Private   Sub   lvwContent_MouseMove(Button   As   Integer,   Shift   As   Integer,   X   As   Single,   Y   As   Single)  
  Dim   lvhti   As   LVHITTESTINFO  
  Dim   i   As   Long,   l   As   Long  
  Dim   s   As   String  
  Dim   TempS   As   String  
   
          Call   GetCursorPos(lvhti.pt)  
          Call   ScreenToClient(lvwContent.hwnd,   lvhti.pt)  
          Call   SendMessage(lvwContent.hwnd,   LVM_SUBITEMHITTEST,   0,   lvhti.pt)  
           
          If   m_X   <>   lvhti.iItem   Or   m_Y   <>   lvhti.iSubItem   Then  
                  m_X   =   lvhti.iItem  
                  m_Y   =   lvhti.iSubItem  
                  If   m_X   <   0   Then  
                          '没有  
                  Else                          
                          If   m_Y   =   0   Then  
                                  '某行第一列  
                                  debug.print   lvwContent.ListItems(m_X   +   1).Text  
                          Else  
                                  '某行第某列  
                                  debug.print   lvwContent.ListItems(m_X   +   1).ListSubItems(m_Y).Text  
                          End   If  
                  End   If  
          End   If  
  End   Sub  
  Top

5 楼prolq()回复于 2006-03-17 22:51:11 得分 0

哇!感谢各位详细的解答,没想到这么快就得到了解决,CSDN真是个答疑与提高的好地方啊!好了,再次感谢大家!Top

相关问题

  • listview控件?
  • 如何获取listview控件中drag到目标控件的文本属性,我只知道可以通过lv.selectedindex()获得索引值,文本怎么获得?
  • 关于ListView控件。
  • listview控件问题
  • listview控件问题
  • ListView控件问题
  • ListView控件问题
  • ListView控件问题
  • 控件索引是怎么一回事?
  • PictureBox控件组索引问题

关键词

  • 控件
  • 鼠标
  • 项目
  • listview
  • lvhti
  • tempitem
  • 指向
  • indx
  • single
  • 项目的索引

得分解答快速导航

  • 帖主:prolq
  • tztz520
  • laviewpbt
  • vansoft

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo