声明
Const LB_ITEMFROMPOINT = &H1A9
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 List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim lXPoint As Long
    Dim lYPoint As Long
    Dim lIndex As Long
    '
    If List1.ListIndex > -1 Then  ' 如果没有按钮被按下
        lXPoint = CLng(X / Screen.TwipsPerPixelX)
        lYPoint = CLng(Y / Screen.TwipsPerPixelY)
        With List1
            ' 获得当前的光标所在的的屏幕位置确定标题位置
            lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, ByVal ((lYPoint * 65536) + lXPoint))
            ' 显示提示行或清除提示行
            If (lIndex >= 0) And (lIndex <= .ListCount) Then
               .ListIndex = lIndex
               'List1.list(lIndex)就是你选中的项
               Popupmenu YourMenu
              '我还不能"并且在菜单中添加自己的ITEM。"            End If
        End With
    End If
End Sub