我没有找到一个本机过程来检索列的索引,信息如下:
ListView1.ListItems.Item (ListView1.SelectedItem.Index) .ListSubItems (HERE)我知道如何获得行的索引,如下所示:
ListView1.SelectedItem.Index我知道如何恢复鼠标的位置,如下所示:
Private Sub ListView1_MouseUp (ByVal Button As Integer, ByVal Shift As Integer, _
ByVal x As stdole.OLE_XPOS_PIXELS, _
ByVal y As stdole.OLE_YPOS_PIXELS)我认为应该可以找到这个索引。提前感谢您的帮助。
发布于 2018-02-01 20:36:56
原生方法是使用LVM_SUBITEMHITTEST。
模块:
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Type LVHITTESTINFO
pt As POINTAPI
flags As Long
iItem As Long
iSubItem As Long
End Type
Private Const LVM_SUBITEMHITTEST As Long = &H1039
Private Const LVHT_ONITEM As Long = &HE
Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long表格:
Private Sub yourListView_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim hitTest As LVHITTESTINFO
With hitTest
.flags = LVHT_ONITEM
.pt.X = (X \ Screen.TwipsPerPixelX)
.pt.Y = (Y \ Screen.TwipsPerPixelY)
End With
SendMessage yourListView.hwnd, LVM_SUBITEMHITTEST, 0, hitTest
If (hitTest.iItem < 0) Then Exit Sub
If hitTest.iSubItem = 0 Then
MsgBox yourListView.ListItems(hitTest.iItem + 1).Text
Else
MsgBox yourListView.ListItems(hitTest.iItem + 1).SubItems(hitTest.iSubItem)
End If
End Subhttps://stackoverflow.com/questions/48547501
复制相似问题