VB.netでListViewのViewプロパティがDetailsの時、特に何もしなくても勝手にツールチップが表示された
dobon.net ↑を参考にしてあれこれ試していましたが、最終的には何もしなくても各項目の上にマウスを移動してなおかつ項目のテキストがコントロールが狭くて全部表示しきれていない場合に勝手にツールチップが表示されるという事に気づきました。 ツールチップの内容を変更して表示させたい時に参考にするかもしれないので一応、コードを保存。 ただ自分の場合は、ツールチップを自動的に表示させる機能が邪魔しているのか、うまく動きませんでした。
Public Class ListViewToolTipTestForm_ver2 Inherits Form Dim WithEvents ListView1 As New ListView Dim ToolTip1 As New ToolTip Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) Me.Text = Me.GetType.Name With Me.ListView1 .View = View.Details .Bounds = New Rectangle(100, 100, 300, 300) .Columns.Add("列1") .Columns.Add("列2") .Columns.Add("列3") Dim lvi As New ListViewItem(New String() {"日本語", "英語", "VisualBasic"}) lvi.SubItems(0).Tag = "こんにちは" lvi.SubItems(1).Tag = "Hello" lvi.SubItems(2).Tag = "Hello World!!" .Items.Add(lvi) End With Me.Controls.Add(Me.ListView1) MyBase.OnLoad(e) End Sub Dim m_lastsubitem As ListViewItem.ListViewSubItem Private Sub ListView1_MouseMove(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseMove Dim hi As ListViewHitTestInfo = Me.ListView1.HitTest(Me.ListView1.PointToClient(Control.MousePosition)) Dim si As ListViewItem.ListViewSubItem = hi.SubItem If Me.m_lastsubitem Is si Then Return If Me.ToolTip1.Active = True Then Me.ToolTip1.Active = False End If If si IsNot Nothing Then Me.ToolTip1.SetToolTip(Me.ListView1, Me.MyToString(si.Tag)) Me.ToolTip1.Active = True End If Me.m_lastsubitem = si End Sub Private Function MyToString(ByVal o As Object) As String If o Is Nothing Then Return "" Return o.ToString End Function End Class