2009-07-22 15 views
12

मैं वर्तमान में तो जैसे एक लेबल के लिए एक टूलटिप जोड़ रहा:वर्तमान में नियंत्रण में बंधे टूलटिप को मैं कैसे हटा सकता हूं?

ToolTip LabelToolTip = new System.Windows.Forms.ToolTip(); 
LabelToolTip.SetToolTip(this.LocationLabel, text); 

जब मैं लेबल का पाठ परिवर्तन के रूप में इस टूलटिप बदलने की जरूरत है, मैं एक नया टूलटिप जोड़ने के लिए एक ही करने का प्रयास करें। दुर्भाग्य से, पुराने टूलटिप नए के तहत बना हुआ है, जो वास्तव में कष्टप्रद है। क्या पुरानी टूलटिप को हटाने का कोई तरीका है, या जब मैं लेबल में टेक्स्ट बदलना चाहता हूं तो क्या मुझे सिर्फ एक नया लेबल बनाना चाहिए?

उत्तर

15

ToolTip का एक उदाहरण बनाएं और जब भी आप इसे SetToolTip विधि का उपयोग करके दिखाना चाहते हैं और इसे छिपाने के लिए Hide विधि का उपयोग करें। आम तौर पर एक से अधिक ToolTip उदाहरण बनाना आवश्यक नहीं है।

+2

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

4
public class ToolTipHelper 
{ 
    private readonly Dictionary<string, ToolTip> tooltips; 

    /// <summary> 
    /// Constructor 
    /// </summary> 
    public ToolTipHelper() 
    { 
     this.tooltips = new Dictionary<string, ToolTip>(); 
    } 

    /// <summary> 
    /// Key a tooltip by its control name 
    /// </summary> 
    /// <param name="controlName"></param> 
    /// <returns></returns> 
    public ToolTip GetControlToolTip(string controlName) 
    { 
     if (tooltips.ContainsKey(controlName)) 
     { 
      return tooltips[controlName]; 
     } 
     else 
     { 
      ToolTip tt = new ToolTip(); 
      tooltips.Add(controlName, tt); 
      return tt; 
     } 
    } 
} 

उपयोग:

var tt = toolTips.GetControlToolTip("button1"); 
tt.SetToolTip(button1, "This is my button1 tooltip"); 
tt = toolTips.GetControlToolTip("button2"); 
tt.SetToolTip(button2, "This is my button2 tooltip"); 
5

मैं यह सब स्थिर इसलिए की तरह बनाने के लिए गेविन स्टीवंस के कोड को संशोधित:

class ToolTipHelper 
{ 
    private static readonly Dictionary<string, ToolTip> tooltips = new Dictionary<string, ToolTip>(); 

    public static ToolTip GetControlToolTip(string controlName) 
    { 
     <same as above> 
    } 
} 

अब आपके पास एक ToolTipHelper का दृष्टांत के लिए है (इसलिए यह कोई है कन्स्ट्रक्टर की आवश्यकता है), और इस प्रकार अब आप इसे किसी भी वर्ग से एक्सेस कर सकते हैं:

ToolTip tt = ToolTipHelper.GetControlToolTip("button1"); 
tt.SetToolTip(button1, "This is my button1 tooltip"); 

किसी भी संस्करण के साथ भी उपयोगी है टूलटिप चालू और बंद करना है, आप बस tt.Active को सत्य या गलत सेट कर सकते हैं।

संपादित

इसके अलावा इस पर सुधार:

class ToolTipHelper 
{ 
    private static readonly Dictionary<string, ToolTip> tooltips = new Dictionary<string, ToolTip>(); 
    public static ToolTip GetControlToolTip(string controlName) 
    { 
     <same as above still> 
    } 
    public static ToolTip GetControlToolTip(Control control) 
    { 
     return GetControlToolTip(control.Name); 
    } 
    public static void SetToolTip(Control control, string text) 
    { 
     ToolTip tt = GetControlToolTip(control); 
     tt.SetToolTip(control, text); 
    } 
} 

तो अब, इस कार्यक्रम में कहीं से भी एक टूलटिप की स्थापना केवल एक पंक्ति है:

ToolTipHelper.SetToolTip(button1, "This is my button1 tooltip"); 

आप डॉन हैं ' पुराने कार्यों तक पहुंच की आवश्यकता नहीं है, आप उन्हें जोड़ सकते हैं और/या उन्हें निजी बना सकते हैं, इसलिए SetToolTip() केवल एक ही है जिसे आप कभी भी चाहते हैं ई।

+0

मुझे लगता है कि गेविन स्टीवंस क्रेडिट का हकदार है, लेकिन मुझे स्थिर समाधान पसंद है। बहुत अधिक विस्तार के बिना, मेरे पास 100 से अधिक नियंत्रणों के साथ एक बहुत ही जटिल रूप था जिसमें प्रत्येक फॉर्म सबमिशन पर उन्हें सौंपा गया टूलटिप्स था और इसलिए आप पुराने लोगों को कभी नहीं मार सकते थे। इस समाधान ने मुझे काफी सिरदर्द से बचाया। – 333Matt

+0

हां, स्थिर बेहतर है! –

3

बस नियंत्रण से टूलटिप निकालने के लिए, अगर आप इस तरह वर्ग को संशोधित कर सकते हैं:

public static void SetToolTip(Control control, string text) 
    { 
     if (String.IsNullOrEmpty(text)) 
     { 
      if (tooltips.ContainsKey(control.Name)) 
      { 
       GetControlToolTip(control).RemoveAll(); 
       tooltips.Remove(control.Name); 
      } 
     } 
     else 
     { 
      ToolTip tt = GetControlToolTip(control); 
      tt.SetToolTip(control, text); 
     } 
    } 

और इस आदेश का उपयोग करें:

ToolTipHelper.SetToolTip(control, "") 
0

टूलटिप वस्तु एक ही साथ कई नियंत्रण में काम करता है पहर।

टूलटिप का एक उदाहरण बनाएं और किसी भी नियंत्रण के टूलटिप को जोड़ने और निकालने के लिए इसका उपयोग करें।

जोड़ते आप बस का उपयोग करना चाहिए .SetToolTip (नियंत्रण, "संदेश है कि जब मंडराना प्रकट होगी") जब आप बस इसे वापस अशक्त करने के लिए सेट .SetToolTip साथ हटाने के (नियंत्रण, नल)।

+0

यदि आप किसी स्रोत को उद्धृत करने जा रहे हैं, तो आपको उस स्रोत को अपनी पोस्ट में विशेषता देना चाहिए। – LarsTech

संबंधित मुद्दे