2010-04-15 33 views
0

我正在向ListViewItem添加工具提示。但是,只有在用戶將鼠標懸停在應用了工具提示的行的第一個單元格上時,纔會顯示工具提示。ListView工具提示只在第一個單元格 - VB.NET

MyListViewItem.ToolTipText = "Important Message" 

其他唯一的代碼,我有相關的工具提示是這樣的:

MyListView.ShowItemToolTips = True 

任何想法,我怎樣才能使工具提示顯示在連續特定的細胞,甚至整個行?謝謝。

+0

重複:http://stackoverflow.com/questions/1328266/how-to-set-tooltips-on-listview-subitems-in-net – 2010-04-15 20:14:51

+0

我正在尋找不同的解決方案。 – Lou 2010-04-16 15:36:07

回答

1

如果你想不同於提到的DUP非包裝的回答,試試這個:

ListView控件FullrowSelect屬性必須是真實的。接下來,您需要存儲每個子項目的提示,我在子項目標記屬性中執行此操作。你想做什麼,是在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 
+0

此代碼只是更改表單的名稱,它不會使工具提示顯示: Me.Text = GetItemTip(CType(sender,ListView),e) – Lou 2010-04-16 13:06:35

+0

我知道,正如我所說的,它顯示如何支持提示對於子項目,你只需要對它進行修改以適應你的需求。也許使用listview上的工具提示控件:) – invert 2010-04-19 06:31:31

相關問題