ListView: visualizzare un ToolTip anche per i SubItem

Per impostazione predefinita se il ListView è impostato in modalità tabella (View = Detail) se si imposta di mostrare il ToolTip per gli item (ShowItemToolTips = True), questo verrà visualizzato solo sulla prima colonna o sulle colonne in cui il testo eccede la lunghezza.

Un modo veloce per visualizzate il ToolTip su tutte le colonne è quello di aggiungere alla Form un componente ToolTip, nel mio esempio tltListView e di gestirne la visualizzazione per le colonne diverse dalla prima (SubItem con indice diverso da 0) nell’evento MouseMove del ListView:

Private Sub lsvSystemInformation_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lsvSystemInformation.MouseMove
    If Me.lsvSystemInformation.Items.Count = 0 Then Return

    Dim ht = Me.lsvSystemInformation.HitTest(e.Location)

    If ht.Item IsNot Nothing AndAlso _
        Not String.IsNullOrEmpty(ht.Item.ToolTipText) AndAlso _
        ht.SubItem IsNot Nothing AndAlso _
        ht.Item.SubItems(0) IsNot ht.SubItem Then

        Me.tltListView.Show(ht.Item.ToolTipText, _
            Me.lsvSystemInformation, _
            e.Location.X, _
            ht.SubItem.Bounds.Bottom + ht.SubItem.Bounds.Height)
    Else
        Me.tltListView.Hide(Me.lsvSystemInformation)
    End If
End Sub

In realtà l’effetto non sarà perfetto perchè il ToolTip del ListView ha un’altezza maggiore.

image

image

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.