2011-02-22 74 views
0

使用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

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

我在示例代码中看到的一个问题是您使用的是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 
0

我没有手头VB6和它已经有一段时间,因为我用它,但如果没记错的话:

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