Hallo,
ich schreibe gerade ein UserControl, in dem selbstgezeichnete Rechtecke mit einem Text drin angezeigt werden. Die Größe der Rechtecke ist vorgegeben und es kann daher vorkommen, dass der Text nicht hineinpasst. Dann soll beim Drüberfahren mit der Maus über das Rechteck ein ToolTip erscheinen, der den ganzen Text anzeigt.
Soweit geht das ja alles. Nur gibt es das Problem, dass dieser ToolTip immer für die vorgesehene Zeit stehen bleibt, auch wenn mittlerweile mit Alt+Tab das Fenster gewechselt wurde. Daher habe ich einen weiteren Event-Handler hinzugefügt, der den ToolTip wieder ausblendet, sobald die Maus das UserControl verlässt.
Leider verlässt die Maus das UserControl formell auch dann, wenn sie über dem ToolTip ist. Oder andersherum: wenn das ToolTip unter der Maus erscheint. In diesem Fall wird das ToolTip sofort wieder ausgeblendet, um es eine Sekunde später (mein Timer) nochmal zu versuchen.
Da ich an der Stelle später noch längere Texte anzeigen möchte, wäre es aber sehr ungünstig, wenn die nicht größer als das Rechteck sein dürfen. Es ist aber auch blöd, wenn der ToolTip länger angezeigt bleibt als es sinnvoll erscheint. Was kann man da tun?
Da die ToolTip-Klasse keine Mouse-Ereignisse anbietet, kann ich auch nicht darauf reagieren...
Also den ToolTip unter [edit: neben, seitlich versetzt] dem Mauszeiger anzeigen? Hm, ich fand es schön, den ToolTip genau da anzuzeigen, wo der abgeschnittene Text steht.
Wenn man z. B. in der MSDN-Hilfe im Index die Maus über einen abgeschnittenen Text fährt, erscheint der Text ja auch genau über dem Listeneintrag, verschwindet aber genau dann, wenn man das Rechteck des Listeneintrags verlässt. Die Maus über dem ToolTip blendet es nicht aus und bei Alt+Tab bleibt es nicht stehen. Genauso hätte ich das auch gerne. 😃