2008-10-28 18 views
12

पर क्लोज़ बटन (लाल x) जोड़ें। मैं .NET टूलटिप ऑब्जेक्ट में एक बंद बटन जोड़ने के लिए एक तरीका ढूंढ रहा हूं जैसा कि NotifyIcon है। मैं टूलटिप को शो() विधि के साथ प्रोग्रामिक रूप से बुलाए गए संदेश गुब्बारे के रूप में उपयोग कर रहा हूं। यह ठीक काम करता है लेकिन टूलटिप को बंद करने के लिए कोई ऑनक्लिक घटना या आसान तरीका नहीं है। आपको अपने कोड में कहीं और छुपाएं() विधि को कॉल करना होगा और मैं टूलटिप को बंद करने में सक्षम होना चाहूंगा। मुझे पता है कि नेट के चारों ओर कई गुब्बारे टूलटिप्स हैं जो विंडोज एपीआई के साथ ऐसा करने के लिए प्रबंधन और अप्रबंधित कोड का उपयोग करते हैं, लेकिन मैं अपने आरामदेह .NET दुनिया में रहूंगा। मेरे पास एक थर्ड पार्टी एप्लिकेशन है जो मेरे .NET एप्लिकेशन को कॉल करता है और अप्रबंधित टूलटिप्स प्रदर्शित करने का प्रयास करते समय क्रैश हो जाता है।एक .NET टूलटिप

उत्तर

4

आप मौजूदा टूल को ओवरराइड करके और ऑन ड्रा फंक्शन को अनुकूलित करके अपनी टूल टिप विंडो को कार्यान्वित करने का प्रयास कर सकते हैं। मैंने कभी भी बटन जोड़ने का प्रयास नहीं किया, लेकिन पहले टूलटिप के साथ अन्य अनुकूलन किया है।

1 class MyToolTip : ToolTip 
    2  { 
    3   public MyToolTip() 
    4   { 
    5    this.OwnerDraw = true; 
    6    this.Draw += new DrawToolTipEventHandler(OnDraw); 
    7 
    8   } 
    9 
    10   public MyToolTip(System.ComponentModel.IContainer Cont) 
    11   { 
    12    this.OwnerDraw = true; 
    13    this.Draw += new DrawToolTipEventHandler(OnDraw); 
    14   } 
    15 
    16   private void OnDraw(object sender, DrawToolTipEventArgs e) 
    17   { 
         ...Code Stuff... 
    24   } 
    25  } 
2

आप ToolTip वर्ग के अपने कार्यान्वयन में CreateParams विधि ओवरराइड करने के लिए कोशिश कर सकते हैं ... यानी

protected override CreateParams CreateParams 
    { 
     get 
     { 
      CreateParams cp = base.CreateParams; 
      cp.Style = 0x80 | 0x40; //TTS_BALLOON & TTS_CLOSE 

      return cp; 
     } 
    } 
+0

क्या कोई यह पुष्टि कर सकता है कि यह काम करता है? वो कैसा दिखता है? – Justin

+0

नहीं। प्रयास किया। :( –

2

आपको लगता है कि TTS_CLOSE शैली सेट अपने स्वयं के CreateParams साथ ToolTip वर्ग उपवर्ग कर सकते हैं:

private const int TTS_BALLOON = 0x80; 
private const int TTS_CLOSE = 0x40; 
protected override CreateParams CreateParams 
{ 
    get 
    { 
     var cp = base.CreateParams; 
     cp.Style = TTS_BALLOON | TTS_CLOSE; 
     return cp; 
    } 
} 

टीटीएस_CLOSE शैली भी requires TTS_BALLOON शैली और आपको टूलटिप पर ToolTipTitle प्रॉपर्टी भी सेट करनी होगी।

इस शैली को काम करने के लिए, आपको सामान्य नियंत्रण v6 शैलियों using an application manifest को सक्षम करने की आवश्यकता है।

एक नया "अनुप्रयोग मैनिफ़ेस्ट फ़ाइल" जोड़ें और जोड़ने < विधानसभा > तत्व के अंतर्गत निम्नलिखित:

<dependency> 
    <dependentAssembly> 
    <assemblyIdentity 
     type="win32" 
     name="Microsoft.Windows.Common-Controls" 
     version="6.0.0.0" 
     processorArchitecture="*" 
     publicKeyToken="6595b64144ccf1df" 
     language="*" 
     /> 
    </dependentAssembly> 
</dependency> 

विजुअल स्टूडियो 2012 में, कम से कम, इस सामग्री डिफ़ॉल्ट टेम्पलेट में शामिल है, लेकिन बाहर टिप्पणी की है - आप बस इसे असम्बद्ध कर सकते हैं।

Tooltip with close button

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