Announcement

Collapse
No announcement yet.

Eigenen Tooltip realisieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Eigenen Tooltip realisieren

    Grüße zusammen,

    da der Standardtooltip ziemlich langweilig erscheint, habe ich einen eigenen geschrieben und von Form abgeleitet (da bestimmte Animationseffekte beim Öffnen und Schließen eingearbeitet worden sind).

    Soweit funktioniert er auch prima. Doch gibt es dabei ein Problem mit der Fokussierung.

    In dem Moment, wo der Tooltip erscheint, wechselt der Eingabefocus auf das ToolTipFenster. Das ToolTip-Fenster sollte bei dem aufrufenden Control weder ein Leave noch ein MouseLeve-Ereignis auslösen (sofern der MausCursor über das ToolTip-Fenster wandert).

    Im Konstruktor des ToolTip-Fensters habe ich

    Code:
    this.SetStyle(ControlStyles.Selectable, false);
    festgelegt.

    Darüberhinaus habe ich die WndProc-Methode wie folgt überschrieben:

    Code:
    protected override void WndProc(ref Message m)
    {
           const int WM_SETFOCUS = 0x0007;
           const int WM_ACTIVATE = 0x0006;
    
           try
           {
                  if ((m.Msg == WM_ACTIVATE) || (m.Msg == WM_SETFOCUS))
                  return;
    
                  base.WndProc(ref m);
           }
           catch 
           {}
    }
    Dennoch kann ich dem Fenster nicht abgewöhnen, den Focus zu erhalten. Ist mein ToolTip-Fenster der komplett falsche Ansatz indem ich von Form und nicht von ToolTip ableite? Wie gesagt brauche ich Animationen und ein völlig anderes Aussehen (über Region realisiert). Darüberhinaus bin ich an die .NET 2.0-Plattform gebunden, da auch für Win2k unterstützt werden soll.

    Ich weiß hier nicht mehr weiter und würde mich über Hilfestellung freuen.

    Vielen Dank im Voraus.
    Andreas Scheck

  • #2
    Hallo,

    schau dir das an: http://dotnet-snippets.de/dns/userco...en-SID633.aspx

    Dort wird zwar ein UserControl verwendet, sollte aber mit einer Form auch gehen (wenn es dann noch sein muss).

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Überschreib mal in deiner ToolTip Form die ShowWithoutActivation Methode und liefer immer true zurück. Das sollte dem Tooltip abgewöhnen beim Anzeigen sich den Focus zu holen.

      [Highlight=c#]
      protected override bool ShowWithoutActivation
      {
      get
      {
      return true;
      }
      }[/Highlight]

      Ergänzt

      Originally posted by Msdn zu ShowWithoutActivation
      If your non-activated window needs to use UI controls, you should consider using the ToolStrip controls, such as ToolStripDropDown. These controls are windowless, and will not cause a window to activate when they are selected.
      Das Snippet von Gü sah mir eigentlich zu abwegig aus mit dem verwenden von ToolStrip Controls. Die MSDN ist aber der selben Meinung wie der Author des Snippet .
      Scheint also der richtige Weg zu sein.
      Zuletzt editiert von Ralf Jansen; 04.12.2008, 13:50. Reason: Neue Erkenntnisse

      Comment


      • #4
        Hallo,

        ich habe beides ausprobiert und beide Möglichkeiten haben funktioniert.

        Ich möchte mich noch einmal für die rasche Hilfe bedanken.

        Viele Grüße
        Andreas Scheck

        Comment

        Working...
        X