代码之家  ›  专栏  ›  技术社区  ›  Joaquim Ribeiro

确定是否在ListView中单击了项目或未单击任何内容

  •  2
  • Joaquim Ribeiro  · 技术社区  · 7 年前

    我在VB6 Classic上选择ListView时遇到问题。

    我有一个包含几个项目的列表视图,但当我从文本行中选择某个位置时,它会自动转到默认/第一个项目。

    listview

    我要寻找的是,当用户单击listview列表文本以外的任何其他位置时,找到一种“不选择任何内容”的方法。

    这是listview代码:

    Private Sub lsvArticle_Click()
       Dim mArticleNumber As Integer, mArticleIndex As Integer
       Dim Splitted() As String
    
       Splitted = Split(lsvArticle.SelectedItem.Text, ":")
       mArticleNumber = CInt(Trim(Splitted(0)))
       mArticleIndex = ArticleNb2ListIdx(mArticleNumber - 1)
       mNewValue = mArticleIndex
       txtValueNew.Text = A_ArticlesDef(mNewValue).W_Art_Numb & " : " & A_ArticlesDef(mNewValue).W_Art_Name
    End Sub
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Brian M Stafford    7 年前

    我想到了几个主意。你需要决定哪个最适合你的情况。第一个想法是响应 ItemClick 事件仅当您单击某个项目时,才会触发此事件。

    Private Sub lsvArticle_ItemClick(ByVal Item As MSComctlLib.ListItem)
       txtValueNew.Text = Item.Text
    End Sub
    

    第二个想法是响应 MouseUp 与执行 HitTest . 如果 命中测试 没有任何内容,然后单击空白区域。

    Private Sub lsvArticle_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
       If Not lsvArticle.HitTest(x, y) Is Nothing Then
          txtValueNew.Text = lsvArticle.SelectedItem.Text
       End If
    End Sub