Kann ich eine unendliche AutoPopDelay für eine QuickInfo in einem .NET Windows Forms-Fenster festlegen?

7

Ich habe die Anforderung, den .NET Windows Forms -Tooltip nicht automatisch ausblenden zu lassen - das heißt, ich brauche sie um sichtbar zu bleiben, bis die Maus aus dem Steuerelement mit der QuickInfo entfernt wird. Ich möchte vermeiden, bestimmte MouseEnter und MouseLeave Ereignisse für alle Steuerelemente mit einem Tooltip zu verwenden. Ich freue mich über die Lösungen von Drittanbietern, wenn sie das Problem lösen.

    
Handleman 30.04.2009, 05:20
quelle

10 Antworten

12

Da es unzählige Male gepostet wurde und aus den frühen Tagen von .NET Framework bekannt ist, können Sie die AutoPopDelay-Zeit nicht höher als Int16.MaxValue (d. h. 32767) festlegen und lassen es funktionieren. Die Verwendung der Tooltip-Methode Show () führt zum selben Ergebnis. Jeder Wert höher als 32767 führt dazu, dass der Timer auf 5000 ms zurückgesetzt wird.

Auch wenn versucht wird, AutomaticDelay auf einen Wert zu setzen, der zu einem höheren AutoPopDelay-Wert als 32767 führt, funktioniert der Tooltip nicht. Außerdem führt die Verwendung der StopTimer () -Methode zu keinen positiven Ergebnissen.

Die einzige Möglichkeit, einen Tooltip mit unbegrenztem Timeout anzuzeigen, bestand darin, die Tooltip-Methode Show () zu verwenden, die die angezeigte Position übergibt. %Code%. Zusammenfassend ist festzustellen, dass das Tooltip-Steuerelement das bizarrste Verhalten aufweist, das mir bisher in einem Steuerelement aufgefallen ist, und die Dokumentation zum Festlegen der Verzögerungszeiten ist ziemlich irreführend.

    
Jimi 13.04.2012 14:59
quelle
10

Ich suchte nach einer Lösung für das Problem

  
  1. Der popup baloon verschwindet zu schnell und erlaubt mir nicht, seinen Inhalt zu lesen
  2.   
  3. Der popup baloon erscheint nicht mehr, wenn er sich in dieser Region befindet.
  4.   

Ich habe in den Foren die folgende Antwort gefunden, die Problem2 nicht löst, aber ich kann den Text mehr als die Zeit lesen, die ich brauche, wenn ich seinen Wert auf 32766 setze und somit - in Meiner Meinung nach - eine Art "Work around":

  

Eigentlich habe ich herausgefunden, dass mein Problem darin liegt, dass ich einen Wert höher als 32767 (32768 und höher hat einen Effekt von 5 Sekunden) wirklich zugewiesen habe   komisch, da AutoPopDelay eine Ganzzahl (32 Bit) als   Parameter und 32767 ist wirklich ein signiertes 16 Bit ...

Aber ich muss zugeben, es ist immer noch scheiße ...

Aber das Einstellen auf 32000 (32 Sekunden) scheint besser zu funktionieren. Keine Ahnung, warum das so ist, aber vielleicht hilft es jemandem.

    
panny 24.06.2010 08:02
quelle
2

In meiner Anwendung muss der QuickInfo-Text alle 10 Sekunden aktualisiert werden. Für mich funktioniert es, den Tooltip jedes Mal zu deaktivieren und zu aktivieren, wenn dieser Text aktualisiert wird. Wenn ich AutoPopDelay auf mehr als 10 Sekunden einstelle, bleibt der Tooltip für immer bestehen. Sie könnten also einen Timer verwenden, um den Tooltip wiederholt zu aktivieren und zu deaktivieren:

%Vor%

Um das Flackern beim Reaktivieren der QuickInfo zu minimieren, setzen Sie InitialDelay auf 1. Wenn Sie AutoPopDelay auf 30000 und das Timer-Intervall auf 30000 einstellen, wird nur alle 30 Sekunden ein sehr kurzes Flackern angezeigt. Für meine Anwendung ist dieses kurze Flackern akzeptabel. Übrigens, vergiss nicht, den Timer einzuschalten! (Zuerst dachte ich, es funktionierte nicht, bis ich entdeckte, dass ich vergessen hatte, den Timer einzuschalten ;-))

Natürlich ist dies eine Heilung für die Symptome und keine elegante Lösung für das Problem.

    
Bert Regelink 29.02.2012 09:49
quelle
2

Versuchen Sie myToolTip.ReshowDelay = 0 .

Sie zeigen den Tooltip sofort nach Ablauf der Verzögerung an. Es hat für mich funktioniert.

    
serhio 21.12.2009 10:47
quelle
1

Dies wird nicht die Antwort sein, die Sie hören wollen ... Rollen Sie Ihre eigenen. Ich hatte einmal Szenario, wo ich das Ribbonbar Tooltip-Verhalten des neuen Office für Shortcut-Tastaturbefehle simulieren wollte und ich fand, dass die Standard-Tooltip-API einfach zu begrenzt ist.

Erstellen Sie eine kleine, einfache und randlose Formularinstanz für jedes Steuerelement, für das Sie einen Tooltip benötigen. Zeigen und verbergen Sie sie dann nichtmodal, während Sie ein Maus-Enter- oder -Lave-Ereignis ausführen. Lassen Sie den Konstruktor für dieses Fenster die UI-Steuerungsinstanz empfangen und lassen Sie das Steuerelement nach seinen Ereignissen abfragen, damit es sich an die Ereignisse zum Eingeben und Leeren der Maus anhängen kann, sodass Sie sie nicht manuell verbinden müssen / p>     

Pieter Breed 30.04.2009 10:32
quelle
1

In meiner begrenzten Erfahrung habe ich festgestellt, dass die Einstellung der Eigenschaft "showAlways" auf "true" den Nebeneffekt hat, dass die Spitze "unendlich" angezeigt wird (bis der Cursor das Steuerelement verlässt). Dies ist nicht, was die Dokumentation sagt, es wird tun, aber das ist, was ich erlebt habe. (Ich verwende jedoch die Janus Supertip-Komponente, und es ist möglich, dass das Verhalten beeinflusst).

    
Gullbyrd 01.12.2011 15:17
quelle
1

Ich denke, Sie versuchen, die Symptome und nicht die Ursache für Ihr Problem zu heilen.

Sie versuchen, eine QuickInfo zu einer anderen QuickInfo zu machen. Ein Tooltip ist definitionsgemäß "ein kleiner" Hover-Kasten "mit Informationen über das Objekt, über dem man schwebt".

Wenn der Benutzer nicht lesen kann, was der Tooltip in 30 Sekunden vorschlagen möchte, handelt es sich nicht wirklich um einen "Tipp", sondern um ein ganzes Kapitel aus der Hilfedatei. Fügen Sie längere Anweisungen in das Handbuch ein und versuchen Sie nicht, sie in eine QuickInfo zu zwingen, die für immer offen bleibt.

    
Peter Perháč 04.10.2010 16:07
quelle
1

Also deaktivierte ich den Tooltip, aber ich benutze ihn immer noch, um den Text für den Tooltip zu halten, weil er sich allen Steuerelementen ordentlich anfügt. Ich habe mein eigenes Panel und Label für den Tooltip erstellt und dynamisch positioniert, sichtbar gemacht und den Text auf der Maus eingegeben und die Maus mit den Events verlassen.

Ich habe auch eine rekursive Funktion geschrieben, um die Mausereignisse zu jedem Label-Steuerelement hinzuzufügen (die einzigen, auf denen ich Tooltips habe), also musste ich nicht manuell dazu und muss nicht daran denken, es zu tun, wenn ich füge ein neues Label hinzu. Neue Entwickler im Projekt werden möglicherweise nie erkennen, dass das Tooltip-Steuerelement die Tipps nicht tatsächlich rendert.

Warum ein Etikett in einem Panel? - so können wirklich große Tooltips scrollen - obwohl das immer noch nicht gut funktioniert.

Es ist nicht wirklich hübsch, und ich bin immer noch auf der Suche nach einer guten Antwort, wenn Sie weiterkommen (oder eine Kritik der Methode, die ich verwendet habe).

Ich bin auf Ссылка gestoßen, aber ihr Tooltip schien in meiner .NET 3.5-Anwendung nicht richtig zu rendern. Ich rede immer noch mit ihnen.

    
Handleman 05.05.2009 05:36
quelle
-1

Die Methode ToolTip.StopTimer könnte helfen. Von MSDN:

  

Die ToolTip-Klasse verfügt über einen internen Zeitgeber, mit dem die Anzeigedauer für QuickInfos festgelegt wird. Die Dauer dieses Timers wird über die AutoPopDelay-Eigenschaft festgelegt. Die StopTimer-Methode stoppt diesen internen Zeitgeber und bewirkt, dass alle angezeigten QuickInfo modal angezeigt werden, bis die Ausblendmethode aufgerufen wird oder das übergeordnete Formular minimiert, ausgeblendet oder geschlossen wird.

    
Tim Robinson 30.04.2009 08:12
quelle
-1

Setzen Sie die angehängte Eigenschaft ToolTipService.ShowDuration auf int.MaxValue:

%Vor%     
CSharper 30.04.2009 07:04
quelle

Tags und Links