2012-10-25 17 views
5

मैं विवरण में एक ListView नियंत्रण है के लिए टूलटिप स्थापित करने के लिए कैसे (राय यह है कि एक ग्रिड के रूप में सूची से पता चलता)एक ListviewSubItem

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

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

मुद्दा है कि टूलटिप केवल जब कर्सर पता चलता है कि के रूप में देखने पहले सूचीदृश्य के कॉलम पर है लेकिन बाकी के लिए नहीं। मैं जानना चाहता हूं कि इसे "आसानी से" दिखाने के लिए क्या है?

+1

क्या आप संपूर्ण सूचीदृश्य के लिए टूलटिप जोड़ने की कोशिश कर रहे हैं, या आप प्रत्येक आइटम के लिए एक अलग टूलटिप चाहते हैं? – Joe

+0

मैं प्रत्येक पंक्ति के लिए एक टूलटिप wnat चाहता हूँ। (एक listviewitem के प्रत्येक subitem के लिए एक ही टूलटिप)। – Osk

उत्तर

6

कुछ शोध के बाद। मैंने इस तरह से इस मुद्दे को हल किया है, लेकिन मैं अभी भी सोच रहा हूं कि इवेंट हैंडलर से बचने का कोई और तरीका है;

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

आप MouseMove के बजाय माउसहोवर को क्यों नहीं संभाले हैं? इसके अतिरिक्त आपके पास "ShowItemToolTips" प्रॉपर्टी है, बस इसे सही पर सेट करें और आप ठीक हैं। –

+1

@ user1803300: 'MouseHover' पर इस फ़ंक्शन का उपयोग करना वाकई मुश्किल है। पहली समस्या में आपके पास निर्देशांक नहीं हैं, आपको कई अन्य घटनाओं को संभालने की आवश्यकता है और अप्रत्याशित त्रुटियां भी हैं। जब मेरे पास कोड पूरा हो जाता है (और यह सामान्य लंबाई नहीं होगी) मैं इसे यहां पोस्ट करूंगा। – Julo