ListView ToolTip仅在First Cell中使用 - VB.NET

时间:2010-04-15 19:17:30

标签: vb.net listview tooltip

我正在向ListViewItem添加工具提示。但是,工具提示仅在用户将鼠标悬停在已应用工具提示的行中的第一个单元格时显示。

MyListViewItem.ToolTipText = "Important Message"

我与ToolTips有关的唯一其他代码是:

MyListView.ShowItemToolTips = True

我知道如何让ToolTip显示在一行中的特定单元格中,甚至是整行中?感谢。

1 个答案:

答案 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