Entwickler-Ecke

WinForms - Zahl ausgeben


DummyScript - Di 27.07.10 16:44
Titel: Zahl ausgeben
Hi!

Ich möchte mit einem Label eine Zahl ausgeben indem ich die Text Eigenschaft verändere. Dies muss dann natürlich permanent geschehen. Mein Fenster wurde mit dem Windows Form-Designer von Visual Studio erstellt. Meine Frage ist nun, ob es ein Event gibt, das permanent aufgerufen wird (das ich zum aktualisieren des Labels verwenden kann)? Oder bekomme ich irgendwie Zugriff auf die Hauptroutine des Fensters?

Danke für eure Hilfe!


Th69 - Di 27.07.10 16:55

Deine Frage ist ein bißchen komisch gestellt, aber ich glaube, du meinst einen "Timer". Dort kannst du dann im Tick-Ereignis den Text des Labels aktualisieren, s. z.B. http://openbook.galileocomputing.de/visual_csharp/visual_csharp_14_016.htm#mj1397eb5e3dc970da0568dc2968abd117


DummyScript - Di 27.07.10 17:03

Ja oder ich mache einen eigenen Thread. Aber auch der Event-Handler des Fensters muss periodisch aufgerufen werden und wenn ich gleich dort die Aktualisierung vornehme spare ich mir das alles. Nur irgendwie finde ich den Teil in dem vom Windows Forms-Designer generierten Code nicht...

Vl. hat damit ja jemand Erfahrung.


DummyScript - Di 27.07.10 17:27

Ok ich glaube ich habs gefunden. Das Event heißt Paint.


Delete - Di 27.07.10 17:44

wann genau soll denn diese zahl im label verändert werden?

das paint-event halte ich für unsicher, da das event nur gerufen wird, wenn sich das fenster tatsächhlich neu zeichnen muss, was ja nicht immer der fall sein muss.
würde mich hier nicht auf paint verlassen.


DummyScript - Mi 28.07.10 12:29

Wird das Fenster nicht jeden Frame/Zyklus neu gezeichnet?

Die Zahl sollte immer aktuell dargestellt werden.


Ralf Jansen - Mi 28.07.10 12:36


C#-Quelltext
1:
Wird das Fenster nicht jeden Frame/Zyklus neu gezeichnet?                    


Nein nur wenn das Fenster mitbekommt(oder man es im sagt) das sich was geändert hat. Wenn sich nichts ändert wird also auch nicht neu gezeichnet. Warum auch.


DummyScript - Mi 28.07.10 21:05

Ok. Gibt es ein Event das jeden Frame aufgerufen wird? Wie wird so etwas normal realisiert?


Kha - Mi 28.07.10 21:51

Du hast immer noch nicht erzählt, wie oft die Quelle dieses Labels überhaupt aktualisiert wird. Aber jede sinnvolle Anzeigefrequenz eines Labels (also sicherlich nicht 60Hz) kannst du ohne große Auslastung mit einem Timer erreichen.


jaenicke - Do 29.07.10 01:00

user profile iconDummyScript hat folgendes geschrieben Zum zitierten Posting springen:
Ok. Gibt es ein Event das jeden Frame aufgerufen wird?
Was für ein Frame denn? Hast du da Filme oder eine Animation oder so in deinem Fenster? :gruebel:


Delete - Do 29.07.10 10:36

da wir hier alle immernoch keine ahnung haben, wann und wieso du die zahl neu zeichnen willst, muss ich spekulieren:

wenn du eine funktion hast, die z.b. etwas größeres und aufwendigeres macht, dann rufe die in einem eigenen thread auf und lass diese ein event schmeißen. dieses kannst du ja abonieren und demensprechend deine zahl aktualisieren.

oder bei einem festen zyklus und kleinen funktionen einfach einen timer nehmen.

ohne mehr infos kann man eben nur ungefähr erraten, was du machen willst.


12profi - Do 29.07.10 11:51

wie wäre es mit Label1.Text="1"; oder wenn du einen int hast:

int a=1
Label1.Text=a.ToString();
oder du machst einen Timer der z.b. das kannst du einstellen jede Sekunde eine andere Zahl ausgibt


ich hoffe es hat dir geholfen

mfg 12profi


DummyScript - Fr 30.07.10 12:54

Jap werde es wohl mit nem Timer realisieren.

Danke für eure Hilfe!


12profi - Mo 02.08.10 21:52

jo wie man jetzt auf Englisch sagen würde :You are welcome