मैं एक टूलटिप को नियंत्रण में कैसे जोड़ूं?


154

मेरे पास कुछ नियंत्रण हैं जिन्हें मैं तब प्रदर्शित करना चाहूंगा ToolTipजब माउस उस पर मंडरा रहा हो। मैं यह कैसे कर सकता हूँ? मैं यह जानना चाहूंगा कि इसे कोड में ठीक से कैसे किया जाए, लेकिन डिजाइनर में भी ( ToolTipटूलबॉक्स में एक घटक है, लेकिन मैं काफी नहीं हूं .. इसे प्राप्त करें)।

मुझे आश्चर्य नहीं होगा अगर यह एक डुप्लिकेट है, लेकिन मैं केवल उन सवालों का पता लगा सकता हूं जो अधिक उन्नत, विशिष्ट परिदृश्यों पर हैं। मैं मूल बातें जानना चाहूंगा।



संबंधित, और पुराने अभी भी (सामान्य रूप से .NET पर लागू होते हैं): stackoverflow.com/questions/168550/…
क्रिस्टोफर काइल हॉर्टन

जवाबों:


208

यहाँ कोड के साथ करने के लिए आपका लेख है

private void Form1_Load(object sender, System.EventArgs e)
{
     // Create the ToolTip and associate with the Form container.
     ToolTip toolTip1 = new ToolTip();

     // Set up the delays for the ToolTip.
     toolTip1.AutoPopDelay = 5000;
     toolTip1.InitialDelay = 1000;
     toolTip1.ReshowDelay = 500;
     // Force the ToolTip text to be displayed whether or not the form is active.
     toolTip1.ShowAlways = true;

     // Set up the ToolTip text for the Button and Checkbox.
     toolTip1.SetToolTip(this.button1, "My button1");
     toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
}

3
इसलिए मुझे लगता है कि यह फर्क नहीं पड़ता अगर toolTip1चर क्षेत्र से बाहर चला जाता है?
शविश

1
ToolTipआपके सभी रूपों के लिए एक स्थिर के बारे में क्या ?
Svish

7
एक बार यह अप्रतिबंधित हो जाने के बाद इसे मुक्त कर दिया जाएगा, जो कि यह नहीं होगा, क्योंकि बटन और चेकबॉक्स अभी भी इसे संदर्भित करेगा
रोलैंड शॉ

2
वे इसे संदर्भित कर रहे हैं क्योंकि "सेटटूलिप" इवेंटहैंडलर को बटन और चेकबॉक्स की घटनाओं में जोड़ता है
एडुआर्डो वाडा

3
मुझे लगता है कि टूलटिप को एक स्थिर चर में डालने के लिए इसका एक बुरा विचार है। यदि कोई फॉर्म बंद हो गया और फिर से खोला गया तो क्या होगा? क्या सेटटूलिप फिर से काम करेगा? और यदि ऐसा है, तो बंद फॉर्म के हैंडलर स्मृति में रहेंगे या सही तरीके से हटाए जाएंगे? मैं परीक्षण में एक मिनट भी नहीं लगाऊंगा। इसके बजाय एक सदस्य varabe का उपयोग करें - thats बुलेट प्रूफ!
एल्म्यू

138

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


54
सुनिश्चित करें कि जब आप ऐसा करते हैं (जैसे दोपहर 2 बजे) कि आप टूलटिप नियंत्रण का उपयोग करते हैं न कि टूलस्ट्रिप नियंत्रण का।
एड्रियन के

2
इस उत्तर के साथ, winform में सिर्फ एक टूलटिप जोड़ने से सभी नियंत्रणों को अपने टूलटिप के रूप में दिया जाता है।
एसएएम

शक्तिशाली अपनी सादगी में, बस सुनिश्चित करें कि आप भी इसे करने के लिए अगले (2 पर) की तरह सही नियंत्रण और नहीं पर छोड़ सकते हैं।
माइकल स्टिम्सन

40
  1. अपने फ़ॉर्म में टूलटिप घटक जोड़ें
  2. उन नियंत्रणों में से एक का चयन करें जिनके लिए आपको एक टूल टिप चाहिए
  3. संपत्ति ग्रिड ( F4) खोलें , सूची में आपको "टूलटिप पर टूलटिप 1" (या कुछ इसी तरह) नामक एक संपत्ति मिलेगी। उस संपत्ति पर वांछित टूलटिप पाठ सेट करें।
  4. अन्य नियंत्रणों के लिए 2-3 दोहराएं
  5. किया हुआ।

यहाँ चाल यह है कि टूलटिप नियंत्रण एक एक्सटेंडर नियंत्रण है , जिसका अर्थ है कि यह प्रपत्र पर अन्य नियंत्रणों के लिए गुणों के सेट का विस्तार करेगा । दृश्यों के पीछे यह कोड उत्पन्न करके हासिल किया जाता है जैसे कि स्वेतलोज़र के उत्तर में। अन्य नियंत्रण उसी तरह से काम कर रहे हैं (जैसे HelpProvider)।


1
तो आप एक ही टूलटिप का उपयोग विभिन्न ग्रंथों के साथ कई नियंत्रणों के लिए कर सकते हैं?
शविश

@ सविश: हाँ, यह एक्सटेंडर नियंत्रण का उद्देश्य है।
फ्रेड्रिक मोर्क

क्या इसका उपयोग क्रॉस-कंट्रोल्स और फॉर्म भी किया जा सकता है? जैसे यदि आपने अपने मानक संपत्ति मानों के साथ एक स्थैतिक टूलटिप बनाया है। या कि इसे बुरा व्यवहार माना जाएगा?
१०:१० पर Svish

मैंने कभी इसकी कोशिश नहीं की, और मैं टूलटिप के आंतरिक कामकाज को नहीं जानता, लेकिन चूंकि इसमें नियंत्रण का संदर्भ मिलता है, जिससे संबंधित पाठ मुझे लगता है कि यह काम कर सकता है । पता लगाने के लिए केवल एक ही तरीका है; इसे आज़माएं: o)
फ्रेड्रिक मोर्क

खैर, मैं स्पष्ट रूप से इसे आज़माऊंगा। लेकिन मैं मेमोरी लीक और इस तरह की चीजों को खोजने में विशेष रूप से अच्छा नहीं हूं ... और अगर यह मेमोरी लीक का कारण बन जाएगा या ऐसा कुछ भी जिसे मैं जानना चाहूंगा, हेह।
Sv:

8

टूलटिप C # में लगभग सभी UI नियंत्रणों को जोड़ना बहुत आसान है। इसके लिए आपको किसी भी माउसओवर इवेंट को जोड़ने की आवश्यकता नहीं है।

यह इस तरह से करना चाहिये-

  1. अपने फॉर्म में टूलटिप ऑब्जेक्ट जोड़ें। एक वस्तु पूरे फॉर्म के लिए पर्याप्त है। ToolTip toolTip = new ToolTip();

  2. इच्छित पाठ के साथ टूलटिप पर नियंत्रण जोड़ें।

    toolTip.SetToolTip(Button1,"Click here");


1

मैंने इसे इस तरह किया: बस किसी भी नियंत्रण में घटना जोड़ें, नियंत्रण के टैग को सेट करें, और उचित नियंत्रण / टैग के लिए टूलटिप को संभालने के लिए एक सशर्त जोड़ें।

private void Info_MouseHover(object sender, EventArgs e)
{
    Control senderObject = sender as Control;
    string hoveredControl = senderObject.Tag.ToString();

    // only instantiate a tooltip if the control's tag contains data
    if (hoveredControl != "")
    {
        ToolTip info = new ToolTip
        {
            AutomaticDelay = 500
        };

        string tooltipMessage = string.Empty;

        // add all conditionals here to modify message based on the tag 
        // of the hovered control
        if (hoveredControl == "save button")
        {
            tooltipMessage = "This button will save stuff.";
        }

        info.SetToolTip(senderObject, tooltipMessage);
    }
}

-3

बस नियंत्रण टूलटाइपटेक्स्टेड ईवेंट की सदस्यता लें, और ई.टूलिपटैक्स्ट, बहुत सरल लौटें।


6
मुझे नहीं लगता कि यह एक मानक WinForm नियंत्रण घटना है।
डैन 7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.