2009-04-29 12 views
11

क्या टूलटिप में प्रकट होने के लिए अतिरिक्त टेक्स्ट सेट करने का एक कठोर तरीका है जब किसी उपयोगकर्ता का माउस चेक किए गए लिस्टबॉक्स में किसी आइटम पर होता है?चेक किए गए लिस्टबॉक्स आइटम के लिए टूलटिप्स?

क्या मैं कोड में ऐसा करने में सक्षम होने की अपेक्षा करेंगे है:

uiChkLstTables.DisplayOnHoverMember = "DisplayOnHoverProperty"; //Property contains extended details 

किसी को भी ऐसा करने के लिए सही दिशा में मुझे बात कर सकते हैं? मुझे पहले से ही कुछ लेख मिल चुके हैं जिनमें यह पता लगाना शामिल है कि माउस वर्तमान में किस आइटम पर है और एक नया टूलटिप उदाहरण बना रहा है, लेकिन यह सबसे अच्छा तरीका बनने के लिए थोड़ा सा लगता है।

अग्रिम धन्यवाद।

उत्तर

12

अपने फॉर्म में टूलटिप ऑब्जेक्ट जोड़ें और फिर चेकडलिस्टबॉक्स के लिए इवेंट हैंडलर जोड़ें। माउज़होवर जो एक विधि ShowToolTip() को कॉल करता है; अपने CheckedListBox जो निम्नलिखित कोड है की MouseMove घटना जोड़ें:

//Make ttIndex a global integer variable to store index of item currently showing tooltip. 
//Check if current location is different from item having tooltip, if so call method 
if (ttIndex != checkedListBox1.IndexFromPoint(e.Location)) 
       ShowToolTip(); 

फिर ShowToolTip विधि बनाने के लिए:

private void ShowToolTip() 
    { 
     ttIndex = checkedListBox1.IndexFromPoint(checkedListBox1.PointToClient(MousePosition)); 
     if (ttIndex > -1) 
     { 
      Point p = PointToClient(MousePosition); 
      toolTip1.ToolTipTitle = "Tooltip Title"; 
      toolTip1.SetToolTip(checkedListBox1, checkedListBox1.Items[ttIndex].ToString()); 

     } 
    } 
+1

, ' प्वाइंट पी' लाइन आवश्यक नहीं है – Maslow

0

योगदान या नहीं; यही है ...

मुझे पहले से ही वर्णन किए गए एक आसान तरीके से अवगत नहीं है (हालांकि मैं शायद हर समय नया बनाने के बजाय टूलटिप उदाहरण का पुनः उपयोग करूँगा)। यदि आपके पास ऐसे लेख हैं जो इसे दिखाते हैं, तो उनका उपयोग करें - या तीसरे पक्ष के नियंत्रण का उपयोग करें जो इस मूल रूप से समर्थन करता है (दिमाग में कोई भी छलांग नहीं)।

5

वैकल्पिक रूप से, आप चेक बॉक्स के साथ एक ListView बजाय इस्तेमाल कर सकते हैं। इस नियंत्रण में टूलटिप्स के लिए समर्थन है।

+0

सुझाव के लिए धन्यवाद, उसे नहीं देखा था। –

+0

कष्टप्रद बात यह है कि ListView डेटा बाइंडिंग का समर्थन नहीं करता है (या क्या मुझे कुछ याद आ रही है?) –

0

मैं अपने अद्भुत समाधान को और अधिक स्पष्ट बनाने के लिए फर्मिन के उत्तर पर विस्तार करना चाहता हूं।

जिस फ़ॉर्म में आप काम कर रहे हैं (संभवतः। डिज़ाइनर सीएस फ़ाइल में) में, आपको अपने चेकडलिस्टबॉक्स में एक माउसमोव इवेंट हैंडलर जोड़ने की आवश्यकता है (फर्मिन ने मूल रूप से माउसहोवर इवेंट हैंडलर का सुझाव दिया है, लेकिन यह काम नहीं करता है मुझे)।

this.checkedListBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.showCheckBoxToolTip); 

इसके बाद, दो वर्ग अपने फार्म, एक टूलटिप वस्तु और एक पूर्णांक के लिए जिम्मेदार बताते हैं पिछले चेकबॉक्स जिसका टूल टिप

private ToolTip toolTip1; 
private int toolTipIndex; 
अंत में

दिखाया गया था का ट्रैक रखने के जोड़ने के लिए, आप showCheckBoxToolTip लागू करने की आवश्यकता() तरीका। यह विधि फर्मिन के उत्तर के समान ही है, सिवाय इसके कि मैंने ShowToolTip() विधि के साथ ईवेंट कॉलबैक विधि को जोड़ा है। साथ ही, ध्यान दें कि विधि पैरामीटर में से एक MouseEventArgs है। ऐसा इसलिए है क्योंकि MouseMove विशेषता को MouseEventHandler की आवश्यकता होती है, जो तब MouseEventArgs की आपूर्ति करता है।

private void showCheckBoxToolTip(object sender, MouseEventArgs e) 
{ 
    if (toolTipIndex != this.checkedListBox.IndexFromPoint(e.Location)) 
    { 
     toolTipIndex = checkedListBox.IndexFromPoint(checkedListBox.PointToClient(MousePosition)); 
     if (toolTipIndex > -1) 
     { 
      toolTip1.SetToolTip(checkedListBox, checkedListBox.Items[toolTipIndex].ToString()); 
     } 
    } 
} 
0
वस्तुओं के अपने चेकबॉक्स सूची में अपने ListItems के माध्यम से

भागो और आइटम 'शीर्षक' विशेषता के रूप में उपयुक्त पाठ निर्धारित करते हैं, और यह हॉवर पर प्रदर्शित करेगा ...

foreach (ListItem item in checkBoxList.Items) 
       { 
        //Find your item here...maybe a switch statement or 
        //a bunch of if()'s 
        if(item.Value.ToString() == "item 1") 
        { 
         item.Attributes["title"] = "This tooltip will display when I hover over item 1 now, thats it!!!"; 
        } 
        if(item.Value.ToString() == "item 2") 
        { 
         item.Attributes["title"] = "This tooltip will display when I hover over item 2 now, thats it!!!"; 
        } 
       } 
नोट के
संबंधित मुद्दे