Event weiterreichen

OP #3327220
Lesenswert?
• ▲
▼
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
OP #3327289
Lesenswert?
• ▲
▼
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
#3327351
Lesenswert?
• ▲
▼
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
#3327443
Lesenswert?
• ▲
▼
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 :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren