列表视图双击事件

时间:2011-02-22 19:41:14

标签: vb6

使用VB6

列表视图

ID Name 

001 Raja
002 Ramu
003 Sajee
..
…

代码

Private Sub listview1_DblClick()

      If Not (listview1.SelectedItem Is Nothing) Then
         Textbox1.text = listview1.selectedItem(0)
        Textbox2.text = listview1.SelectedItem(1)
      End If
End Sub

以上代码未在文本框中显示值

如何在文本框中显示列表视图行值。

需要VB6代码帮助

2 个答案:

答案 0 :(得分:2)

ListView SelectedItem属性不返回在ListView上选择的项目集合,因此您无法显式获取第一个选定项目,第二个选定项目等。您需要遍历ListView中的所有ListItems并检查每个是否被选中。如果是,做你想做的事。

我在示例代码中看到的一个问题是您正在使用ListView DblClick事件。我可能错了,但看起来每当它触发时,只能选择一个ListView项(触发事件的那个)。解决方案是将代码放入新过程中。这是一个应该有效的方法:

Private Sub GetSelectedItems()
  ' Make sure exactly two items are selected on our ListView.
  If (CheckListViewSelectedItemCount(listview1, 2)) Then
      Dim blnFoundFirstItem As Boolean
      blnFoundFirstItem = False
      Dim i As Integer
      ' Find out which items are selected.
      For i = 1 To listview1.ListItems.Count
        If (listview1.ListItems(i).Selected) Then
            ' Assign the Text of the 'first' selected item to Textbox1.Text.
            If (Not blnFoundFirstItem) Then
                Textbox1.Text = listview1.ListItems(i).Text
                blnFoundFirstItem = True
            ' Assign the Text of the 'second' selected item to Textbox2.Text.
            Else
                Textbox2.Text = listview1.ListItems(i).Text
            End If
        End If
      Next i
  Else
    MsgBox "You need to select two items."
  End If
End Sub

我不确定在我的For循环中迭代ListItems的顺序。可能会在我的代码中分配给Textbox1.Text的内容可能要分配给Textbox2.Text。

在ListView上选择至少两个项目所需的代码。我不知道VB6是否有办法返回所选项目的数量,所以我写了一个小函数来做到这一点:

' Return True if the passed ListView control has a number of selected items that's equal to the intExpectedItemCount parameter.
Private Function CheckListViewSelectedItemCount(listView As listView, intExpectedItemCount As Integer) As Boolean
    Dim intSelectedItemCount As Integer
    intSelectedItemCount = 0
    Dim i As Integer
    For i = 1 To listView.ListItems.Count
        If (listView.ListItems(i).Selected) Then
            intSelectedItemCount = intSelectedItemCount + 1
        End If
    Next i
    CheckListViewSelectedItemCount = (intSelectedItemCount = intExpectedItemCount)
End Function

答案 1 :(得分:0)

我手边没有vb6,因为我使用它已经有一段时间了,但如果内存对我有用:

ListView1.SelectedItem将返回一个ListViewItem,它为您提供Text属性以及SubItems属性,使您可以作为数组访问相关列。