将鼠标悬停在列表视图背景中时取消选择列表视图项

时间:2013-12-15 23:23:30

标签: vb.net listview

我需要一些使用大图标视图的listview控件的帮助。我的listview控件中有图标,当我将鼠标悬停在它们上面时,它会显示一个自定义工具提示(不是内置列表视图工具提示)。

我的问题是,当我将鼠标悬停在列表视图的背景中时,它不会取消选择所选项目。我还想缩短工具提示(如果可能的话),这样如果工具提示在5秒内可见,并且有人在此时间之前徘徊在列表视图的背景中,则该项目取消选择并且工具提示消失。

我的代码目前看起来像这样:

Private Sub lsvStores_ItemMouseHover(sender As Object, e As ListViewItemMouseHoverEventArgs) Handles lsvStores.ItemMouseHover
    Dim storeID As String = e.Item.Name
    ShowStoreDetailsTooltip(storeID, sender, e.Item.Position.X, e.Item.Position.Y - 80)
End Sub

Private Sub lsvStores_MouseHover(sender As Object, e As EventArgs) Handles lsvStores.MouseHover
    lsvStores.SelectedItems.Clear()
End Sub

Private Sub ShowStoreDetailsTooltip(ByVal Code As String, ByVal Obj As Control, ByVal XPos As 
    ttpStoreDetails.ToolTipTitle = StoreName
    ttpStoreDetails.IsBalloon = True
    ttpStoreDetails.Show(String.Empty, Obj, 0)
    ttpStoreDetails.Show(tmpString, Obj, XPos, YPos, 5000)
End Sub

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

使用this answer中的一些代码,我们可以使用ListView.GetItemAt()获取当前位于鼠标光标下的项目,然后查看它是否为Nothing。如果是,那么你将做任何你需要做的事情来使你的工具提示消失。

Private _item As ListViewItem = Nothing

Private Sub lsvStores_MouseMove(sender As Object, e As MouseEventArgs) Handles lsvStores.MouseMove
    Dim item As ListViewItem = lsvStores.GetItemAt(e.X, e.Y)

    If item Is Nothing Then
        If _item IsNot Nothing Then
            _item.Selected = False
        End If

        _item = Nothing

       ttpStoreDetails.Hide(sender)
    End If
End Sub