在单击事件里对listitem做循环,判断.select=t

解决方案 »

  1.   

    to:minajo21(大眼睛)
    如果循环判断selected属性,那岂不是没有选择的项被全部选中了,而我只想选中单击了的项。
      

  2.   

    to czy412
    我用的是图标显示
      

  3.   

    to:minajo21(大眼睛)
    我是用右键单击啊,我是想实现类似左键单击的功能。
      

  4.   

    有什么区别吗?判断Button = 2
      

  5.   

    to:minajo21(大眼睛)
    但是用右键单击后,怎么知道单击的是哪一listitem呢?
      

  6.   

    用“ListView1.SelectedItem.其他属性”另外,可根据事件的时间顺序来判别,虽然有点牵强
    首先触发ItemClick事件,再触发MouseUp事件,所以,利用这个,可以:
    做两个菜单,在ItemClick事件Popup一个菜单,在MouseUp事件Popup另一个菜单,当然,可以用ListView1.SelectedItem.Key来判别目前点的是哪一个Item,只要你点的是空白的地方,就自然的触发了MouseUp事件了。祝你好运!
      

  7.   

    《程序员》2002年 4月期 Visual Basic 专家门诊:
    http://www.triaton.com.cn/cgi-bin/lb5k/topic.cgi?forum=4&topic=86&show=0
     
    问题: 如何响应 ListView 控件 ListItem (或: TreeView 控件 Node) 的"鼠标双击"事件?
    解答: Private Sub Form_Load()
                  'ListView:
                  ListView1.ListItems.Add , , "aa"
                  ListView1.ListItems.Add , , "bb"
                  ListView1.HideSelection = False
                  'TreeView:
                  Dim i As Long
                  Dim j As Long
                  Dim NodeX As MSComctlLib.Node
                  TreeView1.Style = tvwTreelinesPlusMinusPictureText
                  Dim Temp As Long
                  For i = 1 To 10
                      Temp = TreeView1.Nodes.Count + 1
                      Set NodeX = TreeView1.Nodes.Add(, , "Node" & Temp, "Node " & Temp)
                      For j = 0 To 5
                          TreeView1.Nodes.Add Temp, tvwChild, "Node" & TreeView1.Nodes.Count + 1, "Node " & TreeView1.Nodes.Count + 1
                      Next
                      NodeX.Expanded = True
                   Next i
          End Sub
          Private Sub ListView1_DblClick()
                  If Not ListView1.SelectedItem Is Nothing Then
                     VBA.MsgBox "Item: [" & ListView1.SelectedItem.Text & "] Double Click!"
                  End If
          End Sub
          Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
                  '使双击空白处无效
                  If Not ListView1.HitTest(x, y) Is ListView1.SelectedItem Then
                     Set ListView1.SelectedItem = Nothing
                  End If
          End Sub
          '提醒注意的是当编程 TreeView 控件 Node 的"鼠标双击"事件时,应只响应"叶子(没有孩子的)节点":
          Private Sub TreeView1_DblClick()
                  If Not TreeView1.SelectedItem Is Nothing Then
                    '只响应叶节点(没有孩子)
                    If TreeView1.SelectedItem.Children = 0 Then
                       VBA.MsgBox TreeView1.SelectedItem.Text
                    End If
                  End If
          End Sub
          Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
                  If Not TreeView1.HitTest(x, y) Is TreeView1.SelectedItem Then
                     Set TreeView1.SelectedItem = Nothing
                  End If
          End Sub问题: 如何实现 TreeView 控件 Node 的"鼠标右键弹出菜单",并响应选单(Menu Click)事件?
    解答: 菜单结构: MenuNodes -> MenuNodesNodeX
          Private Sub Form_Load()
                  Dim i As Integer
                  TreeView1.Style = tvwTreelinesPlusMinusPictureText
                  For i = 1 To 20
                      TreeView1.Nodes.Add , , "Node" & i, "Node " & i
                  Next i
                  TreeView1.HideSelection = False
                  TreeView1.LabelEdit = tvwManual
          End Sub
          Private Sub MenuNodesNodeX_Click()
                  VBA.MsgBox "Node: [" & MenuNodesNodeX.Caption & "] Pop Menu Click!"
          End Sub
          Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
                  If Button = vbRightButton Then
                     If TreeView1.HitTest(x, y) Is TreeView1.SelectedItem Then
                        If Not TreeView1.SelectedItem Is Nothing Then
                           MenuNodesNodeX.Caption = TreeView1.SelectedItem.Text
                           Me.PopupMenu MenuNodes
                        End If
                     End If
                  End If
          End Sub
          Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
                  If Not TreeView1.HitTest(x, y) Is TreeView1.SelectedItem Then
                     Set TreeView1.SelectedItem = Nothing
                  End If
          End Sub
    TreeView 和 ListView 综合实例 ... 
    http://www.triaton.com.cn/cgi-bin/lb5k/topic.cgi?forum=4&topic=31&show=75