विंडोज फॉर्म का उपयोग करके एक बटन पर एक टूलटिप प्रदर्शित करें


जवाबों:


222

टूलटिप वास्तव में एक WinForms नियंत्रण है जो एक ही रूप में कई तत्वों के लिए टूल टिप्स प्रदर्शित करता है।

कहते हैं कि आपके बटन को MyButton कहा जाता है।

  1. अपने फॉर्म में टूलटिप नियंत्रण (सामान्य नियंत्रण के तहत विंडोज फॉर्म टूलबॉक्स में) जोड़ें।
  2. इसे एक नाम दें - MyToolTip कहें
  3. टेक्स्ट पर MyButton की "टूलटिप ऑन" बटन (बटन प्रॉपर्टी ग्रिड में विविध के तहत) पर सेट करें जो उस समय दिखाई दे जब आप उस पर हॉवर करें।

टूलटिप स्वचालित रूप से प्रकट होगा जब कर्सर बटन पर होवर करता है, लेकिन यदि आपको इसे प्रोग्रामेटिक रूप से प्रदर्शित करने की आवश्यकता है, तो कॉल करें

MyToolTip.Show("Tooltip text goes here", MyButton)

टूलटिप, और MyToolTip.Hide (MyButton) को फिर से गायब करने के लिए अपने कोड में।


अच्छा, लेकिन एक प्रश्न: अगर मेरे पास एक फॉर्म में एक से अधिक बटन हैं, तो मुझे अधिक टूलटिप की आवश्यकता है या मैं एक ही टूलटिप के लिए कई विवरण और बटन सेट कर सकता हूं?
घिबोज

8
आपके फॉर्म में केवल एक एकल टूलटिप नियंत्रण की आवश्यकता होती है - प्रत्येक बटन में अलग-अलग सहायता पाठ हो सकते हैं (यही कारण है कि "टूलटिप ऑन मायटूलिप" संबंधित नियंत्रण का एक गुण है, टूलटिप नियंत्रण का नहीं)
डायलन बीट्री

2
सरलतम मामले में टूलटिप को फॉर्म में जोड़ना सबसे अच्छी बात है। समस्या: कस्टम नियंत्रण के डिज़ाइन समय पर आपके पास मूल प्रपत्र का कोई संदर्भ नहीं है। समाधान: नियंत्रण में टूलटिप ऑब्जेक्ट बनाएं। टूलटिप ऑब्जेक्ट के बारे में मत सोचो जो जरूरी रूप से जुड़ा हुआ है।
स्टीफन गौरिचोन

93

प्रपत्र डिज़ाइनर का उपयोग करना:

  • टूलबॉक्स से टूलटिप नियंत्रण को फॉर्म पर खींचें।
  • उस नियंत्रण के गुणों का चयन करें जिसे आप टूल टिप पर दिखाना चाहते हैं।
  • संपत्ति का पता लगाएं 'टूलटिप ऑन टूलटिप 1' (अगर आपने इसे डिफ़ॉल्ट नाम बदल दिया है तो नाम टूलटिप 1 नहीं हो सकता है)।
  • प्रॉपर्टी के टेक्स्ट को उस टूल टिप टेक्स्ट पर सेट करें, जिसे आप दिखाना चाहते हैं।

आप निम्न कॉल का उपयोग करके टूल टिप को भी प्रोग्रामेटिक रूप से सेट कर सकते हैं:

this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");

45

आप टूलटिप क्लास का उपयोग कर सकते हैं:

एक नियंत्रण के लिए एक टूलटिप बनाना

उदाहरण:

private void Form1_Load(object sender, System.EventArgs e)
{
    System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
    ToolTip1.SetToolTip(this.Button1, "Hello");
}

1
यह सही समाधान है क्योंकि यह सीधे ऑटो उत्पन्न वीएस कोड के साथ एकीकृत होता है। धन्यवाद :)
anon58192932

@DaveK धन्यवाद इस तरह से बेहतर है क्योंकि मैं एक ही जगह पर सभी टूलटिप्स को परिभाषित कर सकता हूं
फेडेटेका

धन्यवाद। इस सवाल का सबसे अच्छा और सबसे सीधा जवाब।
नजीब

और भी छोटा:new ToolTip().SetToolTip(this.Button1, "Hello");
The_Black_Smurf

6

डिफ़ॉल्ट टूलटिप के लिए इसका उपयोग किया जा सकता है -

System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");

यदि टूलटिप संदेश के लिए स्वरूपण आवश्यक है तो एक अनुकूलित टूलटिप का उपयोग किया जा सकता है। यह कस्टम स्वरूपण द्वारा बनाया जा सकता है और नियंत्रण के माउस होवर इवेंट पर टूलटिप संवाद के रूप में उपयोग कर सकता है। अधिक जानकारी के लिए कृपया निम्नलिखित लिंक देखें -

http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html


5

टैग संपत्ति में आलसी और कॉम्पैक्ट भंडारण पाठ

यदि आप थोड़े आलसी हैं और नियंत्रण के टैग गुण का उपयोग किसी और चीज़ के लिए नहीं करते हैं, तो आप इसका उपयोग टूलटिप पाठ को संग्रहीत करने और माउसओवर ईवेंट हैंडलर्स को ऐसे सभी नियंत्रणों में असाइन करने के लिए कर सकते हैं :

    private System.Windows.Forms.ToolTip ToolTip1;
    private void PrepareTooltips()
    {
        ToolTip1 = new System.Windows.Forms.ToolTip();
        foreach(Control ctrl in this.Controls)
        {
            if (ctrl is Button && ctrl.Tag is string)
            {
                ctrl.MouseHover += new EventHandler(delegate(Object o, EventArgs a)
                {
                    var btn = (Control)o;
                    ToolTip1.SetToolTip(btn, btn.Tag.ToString());
                });
            }
        }
    }

इस स्थिति में टैग संपत्ति में स्ट्रिंग वाले सभी बटन को एक माउसओवर ईवेंट सौंपा गया है । इसे कॉम्पैक्ट रखने के लिए माउसओवर इवेंट को लैम्बडा एक्सप्रेशन का उपयोग करके इनलाइन परिभाषित किया गया है। इस घटना में किसी भी बटन को दबाने पर उसका टैग टेक्स्ट टूलटिप को सौंपा जाएगा और दिखाया जाएगा।


4

.NET फ्रेमवर्क एक टूलटिप क्लास प्रदान करता है। अपने फॉर्म में उन सभी में से एक को जोड़ें और फिर प्रत्येक आइटम के लिए माउसओवर ईवेंट पर, जिसके लिए आप टूलटिप चाहेंगे, कुछ इस तरह से करें:

    private void checkBox1_MouseHover(object sender, EventArgs e)
    {
        toolTip1.Show("text", checkBox1);
    }

4
private void Form1_Load(object sender, System.EventArgs e)
{
    ToolTip toolTip1 = new ToolTip();
    toolTip1.AutoPopDelay = 5000;
    toolTip1.InitialDelay = 1000;
    toolTip1.ReshowDelay = 500;
    toolTip1.ShowAlways = true;
    toolTip1.SetToolTip(this.button1, "My button1");
    toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
}

4
हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
एकांत

0

डेवके के जवाब के आधार पर , मैंने एक नियंत्रण एक्सटेंशन बनाया:

public static void SetToolTip(this Control control, string txt)
{
    new ToolTip().SetToolTip(control, txt);
}

तब आप एक लाइन के साथ किसी भी नियंत्रण के लिए टूलटिप सेट कर सकते हैं:

this.MyButton.SetToolTip("Hello world");

-4

ज़रूर, सिर्फ माउसओवर इवेंट को हैंडल करें और इसे टूल टिप प्रदर्शित करने के लिए कहें। टी एक टूलटिप है जिसे ग्लोबल्स या कंस्ट्रक्टर में परिभाषित किया गया है:

ToolTip t = new ToolTip();

तब ईवेंट हैंडलर:

private void control_MouseHover(object sender, EventArgs e)
{
  t.Show("Text", (Control)sender);
}

2
मुझे लगता है कि आपको वोट दिया गया क्योंकि यह विंडोज फॉर्म में टूलटिप नियंत्रण का उपयोग करने का तरीका नहीं है। आपको फॉर्म पर केवल एक ही नियंत्रण की आवश्यकता है और यह सभी नियंत्रणों के लिए युक्तियां दिखाता है। अन्य प्रतिक्रियाओं में कोड देखें।
जूलियन मेलविले

1
मुझे लगता है कि स्पष्टीकरण कोड से मेल नहीं खाता है, जहां स्पष्टीकरण में मैंने कहा है कि इसे प्रदर्शित करें और कोड में मैंने इसे भी इनिशियलाइज़ किया है। मेरी गलती। : पी
फ्राई

2
@ julianz वास्तव में, यह विशेष टूलटिप्स रखने के लिए अच्छी तरह से काम करता है जो गतिशील हो सकता है यदि आप राज्य के आधार पर चाहते हैं (निश्चित रूप से निर्माण की अवधि - मुझे माफ कर दो, मैं बस एक ब्लॉक में इसे फिट करने की कोशिश कर रहा था।) अन्य प्रतिक्रियाओं के लिए के रूप में। इसी तरह की नस ... yshuditelu और Dylan Beattie बिना तात्कालिकता के समान थे।
फ्राई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.