2008-10-28 21 views
12

Ich bin auf der Suche nach einer Möglichkeit zum Hinzufügen einer Schließen-Schaltfläche zu einem .NET-ToolTip-Objekt ähnlich der NotifyIcon. Ich benutze den Tooltip als einen Nachrichtenballon, der programmatisch mit der Show() -Methode aufgerufen wird. Das funktioniert gut, aber es gibt kein onclick-Ereignis oder eine einfache Möglichkeit, den Tooltip zu schließen. Sie müssen die Hide() -Methode irgendwo anders in Ihrem Code aufrufen und ich möchte lieber, dass der Tooltip sich selbst schließt. Ich weiß, dass es mehrere Balloon-Tooltips im Netz gibt, die verwalteten und nicht verwalteten Code verwenden, um dies mit der Windows-API durchzuführen, aber ich würde lieber in meiner komfortablen .NET-Welt bleiben. Ich habe eine dritte Party-Anwendung, die meine .NET-Anwendung aufruft und beim Versuch, nicht verwaltete Tooltips anzuzeigen, abstürzt.Schaltfläche zum Schließen hinzufügen (rot x) zu einer .NET ToolTip

Antwort

4

Sie könnten versuchen, ein eigenes Tooltip-Fenster zu implementieren, indem Sie das vorhandene überschreiben und die onDraw-Funktion anpassen. Ich habe nie versucht, einen Button hinzuzufügen, habe aber vorher andere Anpassungen mit dem Tooltip vorgenommen.

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

Sie können versuchen, CreateParams Methode in Ihrer Implementierung von Quick-Info-Klasse außer Kraft zu setzen ... dh

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

      return cp; 
     } 
    } 
+0

Kann jemand bestätigen, dass dies funktioniert? Wie sieht es aus? – Justin

+0

Nein. Gerade versucht. :( –

2

Sie können die Quick-Info-Klasse mit Ihrem eigenen CreateParams Unterklasse, die den TTS_CLOSE Stil setzt:

Der TTS_CLOSE-Stil auch requires der TTS_BALLOON-Stil und Sie müssen auch die ToolTipTitle-Eigenschaft auf der QuickInfo festlegen.

Damit dieser Stil funktioniert, müssen Sie die Common Controls v6-Stile using an application manifest aktivieren.

eine neue "Application Manifest-Datei" hinzufügen und die folgend unter dem <Montag> Element hinzufügen:

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

In Visual Studio 2012, zumindest, dieses Zeug in der Standardvorlage enthalten ist, aber auf Kommentar - Sie können es einfach auskommentieren.

Tooltip with close button

Verwandte Themen