Private LVUsersLastHit As Point
Private Sub lvUsers_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lvUsers.MouseUp
Me.LVUsersLastHit = e.Location
End Sub
Private Sub LvUsers_Doubleclick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvUsers.DoubleClick
Dim HTI As ListViewHitTestInfo = Me.lvUsers.HitTest(Me.LVUsersLastHit)
If HTI.Item Is Nothing OrElse HTI.SubItem Is Nothing Then Exit Sub 'nothing was dblclicked
MsgBox("doubleClicked the " & HTI.Item.ToString & " Item on the " & HTI.SubItem.ToString & " sub Item")
End Sub
5条答案
按热度按时间gv8xihay1#
天啊,每个人都懒得发布代码。这个过程有三个步骤:
1.使用
Control.MousePosition
获取鼠标位置并转换为客户端坐标。1.调用
HitTest
函数来查找鼠标所指向的内容。这将返回一个包含大量信息的对象,除了实际的列号之外,因此...1.使用
IndexOf
搜索子项数组以查找列号。代码如下:
lawou6xi2#
ListView
控件有一个HitTest
方法,你给予它鼠标单击事件的x和y坐标,它给你一个对象,告诉你在那一点的行(列表视图项)和列(列表视图子项)。mspsb9vt3#
这是VB.NET代码,但对象应该相同。
omjgkv6w4#
e.列实际上包含索引
9udxz4iz5#
也许是为了新的框架或什么,但我的VS2022我可以调用columnClic事件,并使用e.列,这给予我的索引,0为第一列,1为第二列,以此类推.例如: