确定是否在 ListView 中单击了某个项目或什么都没有
Determine if an item or nothing was clicked in a ListView
我在 VB6 Classic 上使用 ListView selection 时遇到问题。
我有一个包含一些项目的列表视图,但是当我 select 超出文本行的某处时,它会自动转到 default/first 项目。
我正在寻找的是找到一种方法来 "select nothing" 当用户点击列表视图的列表文本以外的任何其他地方时。
这是列表视图代码:
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
我想到了几个想法。您需要决定哪种方式最适合您的情况。第一个想法是响应 ItemClick
事件。此事件仅在您单击某个项目时触发。
Private Sub lsvArticle_ItemClick(ByVal Item As MSComctlLib.ListItem)
txtValueNew.Text = Item.Text
End Sub
第二个想法是响应 MouseUp
事件并执行 HitTest
。如果 HitTest
为 Nothing,则您单击了空白区域。
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
我在 VB6 Classic 上使用 ListView selection 时遇到问题。
我有一个包含一些项目的列表视图,但是当我 select 超出文本行的某处时,它会自动转到 default/first 项目。
我正在寻找的是找到一种方法来 "select nothing" 当用户点击列表视图的列表文本以外的任何其他地方时。
这是列表视图代码:
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
我想到了几个想法。您需要决定哪种方式最适合您的情况。第一个想法是响应 ItemClick
事件。此事件仅在您单击某个项目时触发。
Private Sub lsvArticle_ItemClick(ByVal Item As MSComctlLib.ListItem)
txtValueNew.Text = Item.Text
End Sub
第二个想法是响应 MouseUp
事件并执行 HitTest
。如果 HitTest
为 Nothing,则您单击了空白区域。
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