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
festgelegt.
Darüberhinaus habe ich die WndProc-Methode wie folgt überschrieben:
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
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);
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 {} }
Ich weiß hier nicht mehr weiter und würde mich über Hilfestellung freuen.
Vielen Dank im Voraus.
Andreas Scheck
Comment