Entwickler-Ecke

WinForms - Fehler-ToolTip bei falscher Eingabe angezeigt lassen


Palladin007 - Fr 27.07.12 12:25
Titel: Fehler-ToolTip bei falscher Eingabe angezeigt lassen
Morgen

Ich arbeite gerade an einer Form, die eine Registrierung abwickeln soll.
Während der Eingabe soll dann überprüft werden, ob die korrekt ist.
Wenn die Eingabe nun ein paar Sekunden falsch und unberührt stehen bleibt, dann soll ein ToolTip mit entsprechenden Informationen dauerhaft angezeigt werden. Wenn in der selben Eingabe-Stelle etwas geändert wird, beginnt der ganze Spaß von vorne, ansonsten bleibt die Anzeige aktiv.

Meine Frage ist nun, ob es eine Eigenschaft gibt, die angibt, ob das ToolTip auch beendet werden soll.
Das soll sich also nicht schließen, außer ich führe direkt die Hide-Methode aus.

Ich habe dazu noch keine passende Eigenschaft gefunden und möchte auch nicht Die Anzeige-Zeit auf utopische Werte setzen, weil das ja im Prinzip nicht die Lösung ist, sondern einfach nur ein raus Zögern.


Kennt jemand eine Möglichkeit, hab ich die einfach nur übersehen, oder hat jemand eine Idee, wie ich das auf anderem Wege lösen kann?


Gruß


PS: War so schlau und hab versucht, die Wartezeit in einen extra Thread zu verlegen. Bei starten übergebe ich dann den Text, das Control und die Zeit als Objekt von irgendeinem Typ. Geschlossen wird das ToolTip dann einfach, indem man den Thread abbricht.
Allerdings hab ich mich bei dem Versuch, das so zu realisieren, ziemlich verrannt, weil ich einfach noch gar keine Erfahrung mit Multithreading habe und ich denke auch, dass ich mal wieder viel zu kompliziert gedacht habe, wenn es doch ganz einfach geht. ^^


Ralf Jansen - Fr 27.07.12 12:39

Ein Tooltip sollte sich Verhalten wie ein Tooltip. Denn für dauerhafte Informationen zu missbrauchen würde ich mal als Holzweg bezeichnen. Tooltips liegen über allen anderen Formen und sind eigentlich nicht verschiebbar. Das Ding nicht automatisch kurzfristig auszublenden hör sich da nach einem mittelgroßen Ärgernis an weil es zum falschen Zeitpunkt immer im Weg ist. Wenn du dauerhafte Informationen zu deiner Registrierung anzeigen willst zeig sie direkt auf der entsprechenden Form an. Da ist der User auch nicht genervt wenn er gerade was anderes macht und deine Registrierung nur nebenbei offen hat.


Palladin007 - Fr 27.07.12 12:48

Ok, das wusste ich noch nicht, wieder was gelernt. ^^


Palladin007 - Fr 27.07.12 13:57

Ich hab mir gerade ein kleines UserControl gebaut, das genau das erledigt.

Dabei ist aber noch eine weitere Frage aufgekommen:

Wie kann ich das Control auch über den Rand der Form sichtbar machen?
Die Form nimmt bei weitem nicht den ganzen Bildschirm ein und ich würde die ganz gerne so klein lassen, was dann aber den Platz für die Controls nehmen würde, die die Fehler anzeigen.


Th69 - Fr 27.07.12 16:44

Dazu müßtest du schon eine Form benutzen (z.B. eine rahmenlose) und darauf dein UserControl platzieren.

Aber warum verwendest du nicht den ErrorProvider [http://msdn.microsoft.com/de-de/library/system.windows.forms.errorprovider.aspx], da der genau dafür gedacht ist. Neben dem Eingabecontrol wird dann ein Icon angezeigt, das bei Hover dann den mittels der SetError-Methode gesetzten Fehlertext anzeigt - und im Validated-Ereignis der Eingabecontrols rufst du dann diese Methode entsprechend auf (s. Beispiel in der MSDN).