Hallo Leute,
habe mal wieder ein Problem, bei dem ich Eure Hilfe brauche. In meiner Anwendung soll in einer "Statusleiste" immer die aktuelle Zeit angezeigt werden. In VB6 war das ganz easy indem man den Style sbrDate bzw. sbrTime ausgewählt hat. Sowas scheint es in für den StatusStrip in C# nicht zu geben. Was zur Folge hat, dass ich mir das selber nachbauen muss. Nun hatte ich überlegt ein Label und einen Timer zu nehmen und den Timer in x ms Abstand die aktuelle Zeit holen und das Label aktualisieren zu lassen. Ich denke, dass kann man auch besser lösen und hoffe auf Vorschläge und Tipps von Euch.
Gruß
Patrick
Wer nicht fragt, bleibt dumm.
Hallo pkautz,
am einfachsten ist wohl folgende Syntax:
toolStripStatusLabel2.Text = DateTime.Now.ToLongTimeString();
Du musst allerdings selbst dafür sorgen, daß die Zeit weitergezählt wird.
mfg - Hans
Und wie stellt man das mit dem Weiterzählen am Besten an, so dass ich durch z.B. einen Timer nicht die komplette Anwendung lahmlege?
Gruß
Patrick
Wer nicht fragt, bleibt dumm.
Such mal nach Timer, die Lösung steht x-Mal hier im Forum.
Das Problem ist ich möchte den Timer eigentlich nicht jede Sekunde ticken lassen (wäre doch bestimmt nicht sehr Ressourcen schonend), sondern halt nur so dass die Zeit aktuell bleibt. Gibt es kein Event, welches mitteilt das sich die Systemzeit geändert hat?
Gruß
Patrick
Wer nicht fragt, bleibt dumm.
du könntest auch threaden...
Medieval Fantasy Online - ORPG Projekt
.NET - Try and Error - Blog - Gemeinschaftsblog
MEt45's Dev Garage - Eigener Blog
Ein Extra Event wird es dafür nicht geben, aber ein Timer ist nun nicht wirklich
Ressourcen Verschwendung. Schließlich willst du ja nur einen String ändern
und anzeigen. Aber meine große Frage an der Sache: Wofür eine Uhr in der
Statusleiste? Windows bietet doch schon eine Uhr in der Taskleiste? Für mich
sind solche (meist) sinnfreien Spielereien eher ein Indiz für schlechte Software...
Wie inTrance schon sagte. Völlig sinnlos. Erst recht, wenn sich die Zeit nicht ändert jede Sekunde.
hallo pkautz,
hatte gleiches Problem. Bildschirmfüllende Applikation und Taskleiste nicht sichtbar.
Ich habe es auch mal mit einem Timer versucht, der nicht in einem eigenen Thread lief.
Es ist wirklich erstaunlich, wie schnell er beginnt, weit von der eigentlichen Zeit abzuweichen 8o
Jede intensive Operation Deines Programms verzögert das Event Deines Timers
(Nachrichtenschleife?).
Deshalb rate ich Dir aus Erfahrung von der threadlosen Timerverwendung ab, habe aber mom. auch keine andere Idee.
Grüße,
der dirk
Wenn du denn unbedingt eine Uhr einbinden willst, kannst du ja auch die Sekunden weg lassen und nur jede Minute den Timer ticken lassen 😉
ciao Anke
Original von der dirk
Es ist wirklich erstaunlich, wie schnell er beginnt, weit von der eigentlichen Zeit abzuweichen 8o
Ich glaube es wäre nicht wirklich sinnvoll eine eigene Zeit laufen zu lassen.
Einfach jedesmal die aktuelle Uhrzeit vom BIOS holen bzw. jede Minute und in der Zwischenzeit einfach so zählen lassen, wenn ihr glaub, dass "DateTime.Now" zu viel Performance verschwendet.
(Man kann es sich auch schwer machen ^^)
Jede intensive Operation Deines Programms verzögert das Event Deines Timers
(Nachrichtenschleife?).Deshalb rate ich Dir aus Erfahrung von der threadlosen Timerverwendung ab, habe aber mom. auch keine andere Idee.
Stichwort: Backgroundworker
Kann man alles mit machen und ist einfach 😉
Hallo zusammen,
einen auf eine Sekunde gestellten Timer zu verwenden, macht nicht das geringste Performance-Problem (selbst 1/10s wäre noch locker drin). Und natürlich muss man trotzdem jedesmal die aktuelle Uhrzeit vom System abfragen. Dann gibt es auch keine Abweichung.
Das man als Mensch ziemlich ausgelastet ist, wenn man jede Sekunden auf die Uhr schauen soll, ist schon klar. Aber ein Rechner langweilt sich bei so einer Aufgabe tierisch.
herbivore