我需要一些使用大图标视图的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
任何帮助表示感谢。
答案 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