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.