Entwickler-Ecke
WinForms - Timer endet nie?!
Sweetiieh - Mo 09.04.12 17:56
Titel: Timer endet nie?!
Hallo Community,
leider muss ich euch nochmal nerven :P Ich habe follgendes Problem.
Ich habe in mein Programm einen Timer eingebaut, der einmal direckt am Anfang nach 100 ms ein Bild nach unten verschiebt.
Jedoch tut er dies immer & endet nie. Ich habe es schon mit einer timer.stop versucht funktioniert nicht.
C#-Quelltext
1: 2: 3:
| public Form1() {InitializeComponent(); Fallen();} |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| private void Fallen() { if (pictureBox1.Location == new Point(12, 12)) { Timer zeit = new Timer(); zeit.Interval = 100; zeit.Start(); zeit.Tick += new EventHandler(down); } }
private void down(object sender, EventArgs e) { { y = y + 2; pictureBox1.Location = new Point(x, y); zeit.Stop(); } } |
daeve - Mo 09.04.12 18:04
und wie wolltest du den Timer stoppen ? im mom. startest du ihn nur.
deine if abfrage bringt so nichts... den wenn du den Timer startets läuft der in einem anderen Thread.
Sweetiieh - Mo 09.04.12 18:12
ja ich dachte das zeit.Stop(); dies tun würde. Kannst du mir dann den Befehl dafür geben, wie ich den timer Stoppen kann?
daeve - Mo 09.04.12 18:16
Sweetiieh hat folgendes geschrieben : |
| ja ich dachte das zeit.Stop(); dies tun würde. Kannst du mir dann den Befehl dafür geben, wie ich den timer Stoppen kann? |
das ist auch richtig, wo wolltest du den dein Timer stoppen, im Code ? hast du mal dein Code "gedebuggt" und wurde diese Zeile erreicht mit timer.stop() ?
am besten du deklariert den Timer als Klassenvariable und im Event das ausgelöst wird stoppst du den Timer wider.
Ralf Jansen - Mo 09.04.12 18:47
Die
Doku [
http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.tick.aspx] enthält wie oft ein passendes Beispiel. Wenn du es genau so machst sollte es auch funktionieren. Ansonsten Code zeigen.
| Zitat: |
| den wenn du den Timer startets läuft der in einem anderen Thread. |
Ist offensichtlich der Winforms Timer. Da läuft der Event nicht in einem anderen Thread.
daeve - Mo 09.04.12 18:53
ja das stimmt natürlich beim Winforms Timer.
Troubadix - Di 10.04.12 16:14
Bei mir lässt sich der Codeausschnitt nicht kompilieren!
Du hast offensichtlich zwei Timer in deiner Form die beide zeit heißen.
Einen hast du wahrscheinlich aus der Toolbox in die Form gezogen.
Und den zweiten erzeugst Du innerhalb der IF-Abfrage mit
Timer zeit = new Timer();
Den zweiten Timer startest du dann auch und registrierst Dein Event, da er den für die Form gültigen Timer überdeckt.
Tritt das Event ein ist diese Variable zeit aus der IF-Abfrage aber nicht mehr gültig. Innerhalb des Event stoppst du dann den Timer zeit der Form, den du aber nie gestartet hast.
Probier mal das hier aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private void Fallen() { if (pictureBox1.Location == new Point(12, 12)) { zeit.Interval = 100; zeit.Start(); zeit.Tick += new EventHandler(down); } } |
Gruß
Troubadix
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!