إضافة زر إغلاق (علامة x باللون الأحمر) إلى تلميح الأدوات. NET
سؤال
وأنا أبحث عن طريقة لإضافة زر إغلاق إلى كائن تلميح الأدوات. 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;
}
}