Hallo,
dieses mal habe ich eine kleine Frage zu Timern und Events.
Und zwar möchte ich, dass wenn ich die Maus x Sekunden über einem TreeViewNode lasse, dass dann in einem TreeView der aktuelle Node aufgeklappt wird.
Mein Problem ist, dass ich nicht weiß, wie ich heraus bekomme, ob nun die x Sekunden vorbei sind...
Meine erste Idee war ein Sleep, aber dieses legt alles schlafen, als nicht so gut.
Dann dachte ich mir, man könnte es mit einem Thread lösen der sich den aktuellen konten merkt und nach x Sekunden nachschaut, ob die Maus noch über dem gleichen ist...
Ist dieses so gut gelöst oder geht man da anders vor?
Bin über jede Hilfe dankbar.
Viele Grüße
MM
Du nimmst einfach einen Timer, erstellst den in der EventMethode (OnMouseHover z.B.) und sagst ihm, das er nach x sekunden auslösen soll und startest den Timer. Nun prüfst du jedes mal wenn MouseHover ausgelöst wird, ob bereits ein timer läuft und ob die Maus noch über demselben Item hovert (wenn nicht stopst du den timer). Wenn der Timer ausgelaufen ist, ruft er die Elapse-Methode auf und darin zeigst du dann deine Infos an.
Gruß David
Hey,
alles klar, vielen Dank für die Antwort.
Aber muss ich die Timerklasse dafür ableiten oder gibt es da schon einpaar Sachen die vorgefertigt sind?
Viele Grüße
tim
In Windows.Forms gibt es eine Timer-Klasse die instanziierst du einfach und benutzt sie.
@Jack aber ich glaube da kann man die HoverZeit nicht vorgeben, oder?!?
Gruß David
Evtl. solls ja auch weniger sein... KA
Gruß David
mmmh,
HoverHoverNode Klappt leider nur bei nicht gedrückter Maustaste, kennt ihr auch ein Event, dass bei gedrückter Maustaste so arbeitet?
Viele Grüße
MM
WÜrde mir spontan keins einfallen, nein. Leite doch einfach von TreeView ab und implementier deine eigene Event-Verarbeitung. Aber ehrlich gesagt kann ich mir nicht vorstellen, das für so eine Anforderung (das die automatisch aufklappen wenn man mit gedrückter maustaste darüber fährt) nichts vorgefertigtes existiert.
Gruß David
Hi!
Willst du etwas draggen, und dann soll der Treenode aufmachen, damit du da hinein-Dreaggen kannst?
Beim Draggen kommen die MouseMoves nicht beim Ziel-Control an, sondern beim Start-Control
Der frühe Apfel fängt den Wurm.
Willst du etwas draggen, und dann soll der Treenode aufmachen, damit du da hinein-Dreaggen kannst?
Kannst du mir sagen, welche Events ich da abfangen muss? Bin jetzt verwirrt wegen dem StartControl 😦
Viele Grüße
MM
Genau 🙂 Das habe ich auch schon so weit alles geschafft mit der Hilfe von diversen Seiten.
Allerdings bekomme ich dieses: "Knoten klappe auf, wenn Maus 3 Sekunden darüber ist" nicht hin...
Srry, ich dachte das wäre von der Art alles das gleiche, sonst hätte ich das sofort geschrieben...
Viele Grüße
MM
Also verschieben etc klappt schon alles. habe mich an einem codeProject Projekt orientiert.
Mein Problem ist noch, wenn ich ein Element per am verschieben bin, öffnet sich der Ordener nicht.
Oft kenne ich es so, dass man mit dem dem Element was man gerade am verschieben ist, über einem Knoten (welcher noch weitere Konten unter sich hat) einfach ein paar Sekunden wartet und dann öffnet dieser sich.
Und das möchte ich auch haben.
Und mein Problem ist, dass ich nicht weiß wie ich das mit der Zeit mache... Weil ohne x Sekunden auf dem Knoten zu warten ist doof, da man ruck zuck bei einer Mausbewegung Teilbäume geöffnet hat, die man gar nicht offen haben wollte...
Versteht ihr grob was ich meine?
Viele Grüße
MM
und mit den drag&drop-events kommst du nciht weiter?
dann würde ich deine Frage mit ja beantworte.
Vielleicht sethe ich im Moment aber auch total auf dem Schlauch....
Viele Grüße
MM
NodeMouseHover
Leider löst das nicht bei gedrückter maustaste aus 😦
Hatte ich auch schon ausprobiert...
Viele Grüße
MM
Hey JAck30lena,
das klappt 🙂 Zwar ohne Verzögerung aber es klappt 🙂
Ich habe das mit dem NodeMouseHover nochmal ausprobiert, dass klappt bei mir nur, wenn die Maus gedrückt ist 😦
Da du schon einmal im Thema bist, kannst du mir sagen, wie man das los lassen an bestimmten stellen verbieten kann?
Viele Grüße
MM
Also ich habe das ganze gerade mal in die NodeMouseHover eingesetzt und da passiert leider nichts 😦
Viele Grüße
MM
Hey,
so langsam klappt alles.
Vielen Dank für deine ausdauernde Hilfe.
Eine letzte Frage habe ich aber noch.
Wenn ich das Element in einen Bereich ziehe wo es nicht hin darf, macht Windows automatisch einen Kreis mit einem Strich durch.
Kannst du mir sagen, wie ich diese Curser Eigenschaft manuell setzten kann bzw. das gleiche verhalten (Normaler/Verbotener Zeiger...)?
Dass soll es dann aber nun endlich gewesen sein 🙂
Danke nochmals und viele Grüße
MM