2012-10-25 61 views
5

我有詳細ListView控件視圖,該(即顯示列表作爲網格視圖)如何設置提示爲ListviewSubItem

mListView.View = View.Details; 
    mListView.mLVSelectedObject.ShowItemToolTips = true; 

    ListViewItem listViewItem = mListView.Items.Add(lValue.Name); 
    listViewItem.ToolTipText = "AAAAAAAAAAAAAAAAA"; 

的問題是,工具提示只顯示了遊標時已經超過了第一個listview的列,但不是其他的。我想知道是否有任何方法讓它顯得「寬鬆」?

+1

您是想爲整個列表視圖添加一個工具提示,還是要爲每個項目提供不同的工具提示? – Joe

+0

我想爲每一行提供一個工具提示。 (與listviewitem的每個子項目相同的工具提示)。 – Osk

回答

6

經過一番研究。我已經用這種方法解決了這個問題,但我仍然想知道是否有另一種方法可以避免EventHandlers;

ToolTip  mTooltip; 
    Point mLastPos = new Point(-1, -1); 

    private void listview_MouseMove(object sender, MouseEventArgs e) 
    { 
     ListViewHitTestInfo info = mLV.HitTest(e.X, e.Y); 

     if (mTooltip == null) 
      mTooltip = new ToolTip(); 

     if (mLastPos != e.Location) 
     { 
      if (info.Item != null && info.SubItem != null) 
      { 
       mTooltip.ToolTipTitle = info.Item.Text; 
       mTooltip.Show(info.SubItem.Text, info.Item.ListView, e.X, e.Y, 20000); 
      } 
      else 
      { 
       mTooltip.SetToolTip(mLV, string.Empty); 
      } 
     } 

     mLastPos = e.Location; 
    } 
+0

爲什麼不處理MouseHover而不是MouseMove ?,除了你有「ShowItemToolTips」屬性,只需將它設置爲true並且你沒事。 – 2015-12-10 15:53:20

+1

@ user1803300:在MouseHover上使用這個函數真的很難。第一個問題你沒有座標,你需要處理許多其他事件,並且還有意想不到的錯誤。當我完成代碼(並且它不會是正常的長度)時,我會在這裏發佈它。 – Julo

相關問題