一个list问题

dreamcs 2005-10-23 10:51:10
大家好,问个list 控件的问题
Private Sub List1_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim flog3 As Integer


List1.ToolTipText = "p"


flog3 = Int(List1.ListIndex)

Print flog3

End sub
打印不出来所鼠标所指list项的index

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Print List1.ListIndex
End Sub
却能打印出来鼠标所指list项的index

为什么第一种方法打印不用来index,
怎么样才能显示出鼠标(mousemove事件)所指list项的index

先谢谢大家了
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamcs 2005-10-23
  • 打赏
  • 举报
回复
太谢谢你们了,这是我在csdn上问的第一个问题,
这么快就解决 了,
谢谢大家
给的分有点少。
谨表心意
northwolves 2005-10-23
  • 打赏
  • 举报
回复
Private Sub Form_Load()
For i = 1 To 10
List1.AddItem i & i
Next
End Sub
Private Sub List1_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)'always =-1
Me.Caption = List1.ListIndex
End Sub

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Caption = List1.ListIndex
End Sub


利用sendmessage 可以实现你的愿望:

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Sub Form_Load()
For i = 1 To 10
List1.AddItem i & i
Next
End Sub
Private Sub List1_Mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lX As Long, lY As Long, lIndex As Long
lX = CLng(X / Screen.TwipsPerPixelX)
lY = CLng(Y / Screen.TwipsPerPixelY)
lIndex = SendMessage(List1.hwnd, &H1A9, 0, _
ByVal ((lY * 65536) + lX))
If lIndex >= 0 And lIndex <= List1.ListCount Then
Me.Caption = lIndex
' List1.Selected(lIndex) = True '选中
End If
End Sub

孙小雄 2005-10-23
  • 打赏
  • 举报
回复
表达式 List(List1.ListIndex) 返回当前选择项目的字符串。

List1_Mousemove 此事件在移动鼠标时发生。

"打印不出来所鼠标所指list项的index"

鼠标所指list项 不等于 list当前选择项目

也就是说当你的鼠标在list1上移动的时候 并没有list1当前选择项目并没有变!所以导致打印失败

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧