मैं C # Winforms में एक लेबल के लिए एक संकेत या टूलटिप कैसे जोड़ सकता हूं?


81

ऐसा लगता है कि Labelकोई है Hintया ToolTipया Hovertextसंपत्ति। जब Labelमाउस द्वारा संपर्क किया जाता है तो संकेत, टूलटिप या होवर टेक्स्ट दिखाने के लिए पसंदीदा तरीका क्या है ?


जवाबों:


112

आपको ToolTipपहले अपने फॉर्म में एक नियंत्रण जोड़ना होगा । फिर आप उस पाठ को सेट कर सकते हैं जो इसे अन्य नियंत्रणों के लिए प्रदर्शित करना चाहिए।

यहाँ एक स्क्रीनशॉट दिखाया गया है ToolTipजो एक नियंत्रण जोड़ने के बाद डिज़ाइनर का नाम है toolTip1:

यहाँ छवि विवरण दर्ज करें


20
वाह, जो दृढ़ / प्रतिस्पद्र्धात्मक लगता है, यक।
बी क्ले शैनन

@ClayShannon एक तरह से मुझे लगता है कि यह है। लेकिन डिजाइन कुछ सुरुचिपूर्ण है। कुछ नियंत्रण कभी उपकरण युक्तियाँ नहीं चाहेंगे। इस तरह, ToolTipनियंत्रण केवल घटनाओं पर माउस के लिए खुद को पंजीकृत कर सकता है और उठाए गए घटना के आधार पर उचित पाठ प्रदर्शित कर सकता है। यह सब पृष्ठभूमि में होता है।
युक

1
मैं सहमत हूँ। यह आपको कई नियंत्रणों के लिए एक ही टूलटिप नियंत्रण का उपयोग करने की अनुमति देता है।
मार्क ऐन्सवर्थ

@MarkAinsworth चूंकि एक टिप्पणी यह ​​अच्छी है और एक यह है कि यह बुरा है, शायद आप कहते हैं कि क्या आप सहमत हैं कि यह अच्छा है या सहमत यह बुरा है? । मुझे लगता है कि आप कह रहे हैं कि आप सहमत हैं कि यह अच्छा है।
बार्लोप

मुझे लगता है कि यह एक बुरा डिज़ाइन है क्योंकि यह केवल एक स्थिर टूलटिप का समर्थन करता है। आप रनटाइम पर टूलटिप को कैसे अपडेट करेंगे?
अरवो बोवेन

91
yourToolTip = new ToolTip();
//The below are optional, of course,

yourToolTip.ToolTipIcon = ToolTipIcon.Info;
yourToolTip.IsBalloon = true;
yourToolTip.ShowAlways = true;

yourToolTip.SetToolTip(lblYourLabel,"Oooh, you put your mouse over me.");

टूलटिप को निपटाने के लिए मत भूलना यदि आप प्रत्येक माउसओवर पर ऐसा करते हैं, तो आप हैंडल को तब तक लीक करेंगे जब तक जीसी पुराने टूलटिप्स पर अंतिम रूप से कॉल नहीं करता।
drake7707


15

बस इसे करने का एक और तरीका है।

Label lbl = new Label();
new ToolTip().SetToolTip(lbl, "tooltip text here");

5

बस मेरा विचार साझा करने के लिए ...

मैंने लेबल वर्ग को इनहेरिट करने के लिए एक कस्टम क्लास बनाया। मैंने टूलटिप वर्ग और सार्वजनिक संपत्ति, टूलटिप टेक्स्ट के रूप में निर्दिष्ट एक निजी चर जोड़ा। फिर, इसे माउसइंटर डेलीगेट विधि दी। यह एकाधिक लेबल नियंत्रणों के साथ काम करने का एक आसान तरीका है और प्रत्येक लेबल नियंत्रण के लिए अपने टूलटिप नियंत्रण को निर्दिष्ट करने के बारे में चिंता करने की ज़रूरत नहीं है।

    public partial class ucLabel : Label
    {
        private ToolTip _tt = new ToolTip();

        public string TooltipText { get; set; }

        public ucLabel() : base() {
            _tt.AutoPopDelay = 1500;
            _tt.InitialDelay = 400;
//            _tt.IsBalloon = true;
            _tt.UseAnimation = true;
            _tt.UseFading = true;
            _tt.Active = true;
            this.MouseEnter += new EventHandler(this.ucLabel_MouseEnter);
        }

        private void ucLabel_MouseEnter(object sender, EventArgs ea)
        {
            if (!string.IsNullOrEmpty(this.TooltipText))
            {
                _tt.SetToolTip(this, this.TooltipText);
                _tt.Show(this.TooltipText, this.Parent);
            }
        }
    }

प्रपत्र या उपयोगकर्ता नियंत्रण की प्रारंभिक विधि (डिज़ाइनर कोड) में, अपने लेबल नियंत्रण को कस्टम वर्ग में पुन: असाइन करें:

this.lblMyLabel = new ucLabel();

इसके अलावा, डिजाइनर कोड में निजी चर संदर्भ बदलें:

private ucLabel lblMyLabel;

लेकिन क्या फॉर्मल डिज़ाइनर डिज़ाइनर का उपयोग करके उपयोगकर्ता द्वारा हर बार कुछ परिवर्तन करने पर डिज़ाइनर कोड को पुन: उत्पन्न नहीं किया जाता है?
रॉबर्ट सिनोरडज़की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.