Ich rufe nach key down einen timer ab. Der timer hat eine Methode die auch einwandfrei funktioniert und den Wert hochzählt solange key down ist. Jetzt möchte ich aber eine Methode zur überprüfung der Werte, aus der timermethode aufrufen. Wenn ich das einbinde, zählt de rtimer nicht mehr weiter. Also Zählt der Wert bloß noch einmal, wenn key down ist. Wie oder was muss ich übergeben das key down weiter zählt? liebe grüße
Kann es sein, daß die aufgerufene Methode crasht und die Ausnahme anschließend irgendwo gefressen wird?
hmm die methode gibt am ende den wert zurück und der wird dann in der timer methode ausgegeben, das klappt alles. also denke ich nicht das etwas crasht. Die methode die aus der timer methode heraus aufgerufen wird übergebe ich nur einen wert zum rechnen, kanne s daran liegen?
Peter Naschke schrieb: > Die methode die aus der timer methode heraus aufgerufen wird übergebe > ich nur einen wert zum rechnen, kanne s daran liegen? wir wissen weder die Programiersprache noch die umgebung. Eventuell Quellcode währe auch hilfreich.
Achso entschudigt bitte ich benutze visual studio und programmiere eine windows form
Peter Naschke schrieb: > Achso entschudigt bitte ich benutze visual studio und programmiere eine > windows form und? Welche Sprache C#, C, C++, VB.
private void bp1mhz_KeyDown(object sender, MouseEventArgs e) { Gummibaer = 1; timer1.Enabled = true; timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { if (timer1.Enabled == false) { timer1.Stop(); } else { TB_baeren.Text = menge(TB_eingabebaer.Text); } } private string menge(string baer) { anzahl = baer + Gummibaer; return Convert.ToString(anzahl); } Mal ein Bespiel, wenn die berechnung der menge im else zweig steht wird bei gedrücktem key immer eins höher gezählt. schreibe ich so, wird nicht höher gezählt
Peter Naschke schrieb: > TB_baeren.Text = menge(TB_eingabebaer.Text); Der aktuelle Parameter ist ein String. > anzahl = baer + Gummibaer; Was ist das denn? String + int, oder was?
Das war doch bloß ein beispiel das ich mir schnell asugedacht habe, ich möchte wissen wie ich den kopf deklarieren muss um das timer event nicht zu unterbrechen. Und vorab ja da fehlt auch ein key up um den timer zu stoppen ... weil es ein beispiel ist
Und um das nochmal aufzugreifen,der code macht keine probleme und wird voll ausgeführt nur der timer wird unterbrochen, so sieht es für mich zumindest aus. Also wird in diesem beispiel baer auch bei gedrückter taste nur einmal gezählt.
Peter Naschke schrieb: > ... > Mal ein Bespiel, wenn die berechnung der menge im else zweig steht wird > bei gedrücktem key immer eins höher gezählt. schreibe ich so, wird nicht > höher gezählt Abgesehen von dem erwähnten String + Int, reicht es meistens das KeyPress-Event zu nutzen (das wird mit der im System eingestellten Wiederholungsrate gefeuert, u.U. KeyPreview in der Form einschalten, wenn das gebraucht wird), zum anderen müsste bei der Timer-Variante mit Invoke/InvokeRequired gearbeitet werden, um keine nicht zulässigen Thread übergreifenden Zugriffe auf UI-Elemente durchzuführen: http://msdn.microsoft.com/en-us/library/ms171728%28v=vs.85%29.aspx
Peter Naschke schrieb: > Und vorab ja da fehlt auch ein key up um den timer zu stoppen ... weil > es ein beispiel ist Wenn du geholfen bekommen willst, dann solltest du die Helfer nicht mit solchen Schoten veräppeln.
Uiuiui, dein Code ist echt lustig ;-) So weit ich weiß ist die Enabled-Property des Timers gleichtzusetzen mit den Start und Stop Methoden. Peter Naschke schrieb: > timer1.Enabled = true; > timer1.Start(); ist also doppelt gemoppelt. Ebenso macht Peter Naschke schrieb: > if (timer1.Enabled == false) > { > timer1.Stop(); > } keinen Sinn. Wenn der Timer nicht mehr aktiv ist, wird übrigens auch deine Tick Methode gar nicht erst aufgerufen Und wo deklarierst du anzahl? Wenn das noch nur lokal in der einen Methode benutzt wird, musst du es nicht der Klasse als Member hinzufügen. Und und und... Räum erstmal auf, dann sehen wir weiter :-)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.