إضافة زر إغلاق (علامة x باللون الأحمر) إلى تلميح الأدوات. NET

StackOverflow https://stackoverflow.com/questions/245045

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا أبحث عن طريقة لإضافة زر إغلاق إلى كائن تلميح الأدوات. NET مماثلة لتلك التي في NotifyIcon له. أنا باستخدام تلميح الأدوات بمثابة بالون رسالة يسمى برمجيا مع أسلوب عرض (). أن يعمل بشكل جيد ولكن ليس هناك حدث onclick أو طريقة سهلة لإغلاق تلميح الأدوات. لديك لاستدعاء الأسلوب إخفاء () في مكان آخر في التعليمات البرمجية وأنا أفضل أن يكون تلميح الأدوات تكون قادرة على إغلاق نفسها. أعرف أن هناك عدة تلميحات بالون في جميع أنحاء الشبكة التي تستخدم إدارة والتعليمات البرمجية غير المدارة لأداء هذا مع API ويندوز، ولكن أنا يفضلون البقاء في بلدي مريح العالم .NET. لدي تطبيق طرف thrid التي تدعو تطبيق. NET بلدي ولها تحطم عند محاولة عرض تلميحات غير المدارة.

هل كانت مفيدة؟

المحلول

وقد تتمكن من محاولة لتنفيذ الخاصة نافذة تلميح الأداة عن طريق تجاوز واحدة القائمة وتخصيص وظيفة وظيفة onDraw. لم أحاول أبدا إضافة زر، ولكن قد فعلت تخصيصات أخرى مع تلميح الأدوات من قبل.

    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     }

نصائح أخرى

ويمكنك فئة فرعية الطبقة تلميح الأدوات مع CreateParams الخاصة بك التي تحدد النمط TTS_CLOSE:

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;
    }
}

ونمط TTS_CLOSE أيضا يتطلب النمط TTS_BALLOON ويجب أيضا تعيين الخاصية ToolTipTitle على تلميح الأدوات.

لتحصل على هذا النمط في العمل، تحتاج إلى تمكين عناصر تحكم شائعة V6 أساليب باستخدام بيان التطبيق .

وإضافة الجديد "تطبيق ملف بيان" وإضافة التالية تحت <التجمع> العنصر:

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

وفي Visual Studio 2012، على الأقل، يتم تضمين هذه الاشياء في القالب الافتراضي ولكن علق بها - يمكنك فقط غير تعليق عليه

ويمكنك محاولة لتجاوز أسلوب CreateParams في التطبيق الخاص بك من الدرجة تلميح الأدوات ... أي بمعنى.

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

           return cp;
        }
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top