3 Stimmen

Wie lege ich fest, wann ein Tooltip angezeigt werden soll?

Ich schreibe ein Kalender-Steuerelement in .Net WinForms, die einen Tooltip für jedes Datum anzeigen wird.

Wie kann man am besten bestimmen, wann die QuickInfo angezeigt werden soll?

Sofortige Anzeige in MouseMove würde es in den Weg zu bekommen, so möchte ich es zu zeigen, wenn die Maus über jedes Datum Zelle schwebt.

En MouseHover Ereignis wird nur beim ersten Hover ausgelöst, nachdem MouseEnter also kann ich es nicht verwenden.

Wie kann man das am besten machen?

EDITAR Ich verwende WinForms

6voto

Kevin Montrose Punkte 21631

Die Zeitverzögerung zwischen Enter und Hover wird in SystemInformation.MouseHoverTime .

Wenn aus irgendeinem Grund der eingebaute Tooltip-Behandlungscode des von Ihnen verwendeten UI-Frameworks nicht ausreicht, könnten Sie einfach nach jeder Mausbewegung einen Timer starten und einen Tooltip anzeigen, wenn dieser ausgelöst wird. Natürlich müssten Sie den Timer jedes Mal zurücksetzen, wenn die Maus bewegt wird, um eine lange Reihe "Regen von Tooltips" zu verhindern.

0voto

Charlie Salts Punkte 12529

Schauen Sie sich die Eigenschaften AutoPopDelay, InitialDelay und ReshowDelay der Klasse ToolTip an, da sie das Verhalten des Tooltips steuern.

Ich spiele in der Regel mit den Werten herum, bis ich etwas bekomme, das sich richtig anfühlt". Es ist ärgerlich, wenn ein Tooltip sofort angezeigt wird, und bei kurzen Tooltips ist es auch ärgerlich, wenn sie zu schnell wieder verschwinden. Bei wirklich langen Tooltips, z. B. mehreren Absätzen (ja, das ist eine schlechte Designentscheidung, aber wenn es viele Informationen zu lesen gibt, sollte ich sie wenigstens lesen können), sollten sie geöffnet bleiben, solange meine Maus stillsteht.

A Tooltip-Beispiel aus MSDN ergibt die folgenden Werte:

 AutoPopDelay = 5000;
 InitialDelay = 1000;
 ReshowDelay = 500;
 // Force the ToolTip text to be displayed whether or not the form is active.
 ShowAlways = true;

Wie in einem Kommentar erwähnt, möchte der Poster den Tooltip programmatisch auslösen. Dazu muss ToolTip.Show( ) aufgerufen werden. Um einen Verzögerungseffekt zu erzielen, sollten Sie einen Timer laufen lassen, der die Zeit zählt, in der die Maus stillsteht. Immer wenn die Maus das Steuerelement betritt, verlässt oder sich darin bewegt, sollte diese Zeit zurückgesetzt werden.

0voto

devuxer Punkte 40605

Es wäre hilfreich zu wissen, welche Technologie Sie verwenden (ASP.NET? Forms? WPF?), da sie alle unterschiedliche Möglichkeiten zur Implementierung von QuickInfos haben:

  • Mit ASP.NET können Sie einfach das ToolTip-Eigenschaft eines Steuerelements (wie (z. B. ein Label-Steuerelement, das eine Zahl in Ihrem Kalender anzeigt), und es wird automatisch ein Tooltip angezeigt nach einer leichten Verzögerung, wenn der Mauszeiger über das Steuerelement.
  • Bei Formularen muss man meiner Meinung nach tatsächlich ein ToolTip-Objekt erstellen und ein Steuerelement an dieses Objekt anhängen.
  • In WPF können Sie ein Label.ToolTip Element zu Ihrem XAML-Code hinzufügen.

In allen Fällen gibt es jedoch eine eingebaute Möglichkeit, so dass Sie möglicherweise gar keinen eigenen Code schreiben müssen.

Wenn Ihre Situation so individuell ist, dass Sie Ihren eigenen Code schreiben müssen, müsste ich mehr darüber wissen, wie Sie die Zahlen in Ihrem Kalender darstellen, um Ihnen helfen zu können.

Letzter Punkt: Sie haben nicht wirklich danach gefragt - und es liegt vielleicht nicht in Ihrem Einflussbereich -, aber Sie sollten sich fragen, ob eine QuickInfo überhaupt der beste Weg ist, um Kalenderinformationen anzuzeigen. Wenn der Platz wirklich knapp ist, könnte die Antwort "ja" lauten, aber wenn Sie genug Platz haben, um die Kalenderereignisse (oder sogar die ersten paar Worte jedes Ereignisses) anzuzeigen, würde dies den Benutzer davor bewahren, den ganzen Kalender "durchzugehen" (d. h. jedes Datum einzeln zu überfliegen).

-Dan

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X