2011-02-09 14 views
17

ठीक है तो मैं एक पूर्ण शुरुआत करने वाला हूं और सी # में एक छोटा ऐप डाल सकता हूं जहां मैं टेक्स्टबॉक्स में उपयोगकर्ता नाम दर्ज करता हूं और एप्लिकेशन को उस उपयोगकर्ता नाम का अवतार मिलता है और इसे एक पिक्चरबॉक्स में प्रदर्शित करता है।पिक्चरबॉक्स टूलटिप बदल रहा है सी #

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

धन्यवाद।

उत्तर

30

निम्न कोड के साथ अपने चित्र बॉक्स में एक होवर ईवेंट जोड़ें।

private void pictureBox1_MouseHover(object sender, EventArgs e) 
{ 
    ToolTip tt = new ToolTip(); 
    tt.SetToolTip(this.pictureBox1, "Your username"); 
} 
+0

यह पूरी तरह से काम किया! मैंने टेक्स्टबॉक्स 1 के लिए "आपका उपयोगकर्ता नाम" बदल दिया। आगे: डी धन्यवाद! – BrandNewDev

+3

सुनकर खुशी हुई, यह उन चीजों में से एक है जिसे आप आश्चर्यचकित करते हैं, अब माइक्रोसॉफ्ट ने पिक्चरबॉक्स नियंत्रण के लिए टूलटिप नामक संपत्ति क्यों नहीं बनाई ... मुझे पहले भी कुछ समय लगेगा – Joe

0
 private void pictureBox1_Paint(object sender, PaintEventArgs e) 
    { 
     ToolTip tooltip1 = new ToolTip(); 
     tooltip1.Show(textBox1.Text, this.pictureBox1); 
    } 

     private void pictureBox1_MouseMove(object sender, MouseEventArgs e) 
    { 
     pictureBox1.Invalidate(); 
    } 
+0

मैं बस सोच रहा था ... क्यों जब भी माउस उस पर चलता है तो चित्र बॉक्स को अवैध कर दिया जाता है? एक सामान्य स्थिति में, हम एक दूसरे में चित्र बॉक्स को कई बार अवैध कर सकते थे ... सभी टूलटिप को अपडेट करने के नाम पर। यह सकल अक्षमता एक गंभीर गैर स्टार्टर है। –

18

Joes 'जवाब काम कर पाने करता है, लेकिन यह अक्षम है। कोड PictureBox पर हर बार एक नया ToolTip बनाता है। जब आप SetToolTip() विधि का उपयोग करते हैं, तो यह निर्दिष्ट नियंत्रण के साथ बनाए गए ToolTip को जोड़ता है और स्मृति में ToolTip रखता है। आपको केवल एक बार इस विधि को कॉल करने की आवश्यकता है। मेरा सुझाव है कि आप अपने फॉर्म कन्स्ट्रक्टर में प्रत्येक PictureBox के लिए केवल एक ToolTip बनाएं। मैं इस परीक्षण किया है और यह ठीक काम करता है, और उपकरण सुझावों मेरे लिए तेज़ी से प्रदर्शित:

public MyForm() 
{ 
    InitializeComponent(); 

    // The ToolTip for the PictureBox. 
    new ToolTip().SetToolTip(pictureBox1, "The desired tool-tip text."); 
} 
0

ब्रैंडन मिलर के जवाब ठीक है, तथ्य है कि वह PictureBox प्रति एक उपकरण युक्ति बनाने के लिए पता चलता है के लिए को छोड़कर । यह अभी भी अप्रभावी है, हालांकि जो के दृष्टिकोण से बेहतर है - क्योंकि आपको वास्तव में पूरे फॉर्म के लिए एक से अधिक टूलटिप ऑब्जेक्ट की आवश्यकता नहीं है! यह विभिन्न नियंत्रणों के लिए हजारों 'टूलटिप परिभाषाओं' (शायद वास्तविक शब्द नहीं) बना सकता है (फॉर्म पर बिट्स और बॉब्स)। यही कारण है कि आप टूलटिप बनाते या सेट करते समय नियंत्रण को पहले पैरामीटर के रूप में परिभाषित कर रहे हैं।

सही (या कम से कम से कम बेकार) दृष्टिकोण, जहाँ तक मुझे पता है हूँ, के रूप प्रति एक टूलटिप वस्तु बनाने और उसके बाद SetTooltip फ़ंक्शन का उपयोग विभिन्न नियंत्रण के लिए 'परिभाषा' बनाने के लिए है । उदाहरण:

private ToolTip helperTip; 
public MyForm() 
{ 
    InitializeComponent(); 

    // The ToolTip inicialization. Do this only once. 
    helperTip = new ToolTip(pictureBox1, "Tooltip text"); 
    // Now you can create other 'definitions', still using the same tooltip! 
    helperTip.SetToolTip(loginTextBox, "Login textbox tooltip"); 
} 

या, कुछ अलग ढंग से, inicialization पहले से किया साथ:

// Instantiate a new ToolTip object. You only need one of these! And if 
// you've added it through the designer (and renamed it there), 
// you don't even need to do this declaration and creation bit! 
private ToolTip helperTip = new ToolTip(); 
public MyForm() 
{ 
    InitializeComponent(); 

    // The ToolTip setting. You can do this as many times as you want 
    helperTip.SetToolTip(pictureBox1, "Tooltip text"); 
    // Now you can create other 'definitions', still using the same tooltip! 
    helperTip.SetToolTip(loginTextBox, "Login textbox tooltip"); 
} 

आप फार्म डिजाइनर में ToolTip जोड़ा हैं, तो आप शुरुआत में घोषणा को छोड़ सकते हैं। आपको इसे निष्क्रिय करने की भी आवश्यकता नहीं है (जहां तक ​​मुझे पता है, यह डिजाइनर द्वारा उत्पन्न कोड द्वारा किया जाना चाहिए), अलग-अलग नियंत्रणों के लिए नए टूलटिप्स बनाने के लिए बस SetToolTip का उपयोग करें।

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