我正在向ListViewItem添加工具提示。但是,工具提示仅在用户将鼠标悬停在已应用工具提示的行中的第一个单元格时显示。
MyListViewItem.ToolTipText = "Important Message"
我与ToolTips有关的唯一其他代码是:
MyListView.ShowItemToolTips = True
我知道如何让ToolTip显示在一行中的特定单元格中,甚至是整行中?感谢。
答案 0 :(得分:1)
如果你想要一个非包装的答案,不像上面提到的那样,试试这个:
listview FullrowSelect属性必须为true。接下来,您需要存储每个子项的提示,我在subitem标记属性中执行此操作。您想要做的是,在listview mousemove事件中,您抓住鼠标下的项目,获取它的子项目,并使用该提示。
这个简单的例子向您展示了如何获得该子项工具提示,您可以稍微破解它以满足您的需求。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
lvw.ShowItemToolTips = True
lvw.Columns.Add("Column A")
lvw.Columns.Add("Column B")
lvw.Columns.Add("Column C")
lvw.Items.Add(New ListViewItem(New String() {"Colors", "Green", "Blue"}))
lvw.Items(0).SubItems(0).Tag = "See the other columns"
lvw.Items(0).SubItems(1).Tag = "Like grass"
lvw.Items(0).SubItems(2).Tag = "Like the sky"
End Sub
Function GetItemTip(ByVal list As ListView, ByVal e As System.Windows.Forms.MouseEventArgs) As String
Dim item As ListViewItem = list.GetItemAt(e.X, e.Y)
If Not IsNothing(item) Then
Dim si As ListViewItem.ListViewSubItem
si = item.GetSubItemAt(e.X, e.Y)
If Not IsNothing(si) Then
Return si.Tag.ToString
Else
Return ""
End If
Else
Return ""
End If
End Function
Private Sub lvw_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lvw.MouseMove
Me.Text = GetItemTip(CType(sender, ListView), e)
End Sub