2016-05-04 8 views
1

Ich habe eine Taste, die ich drücke und es startet einen Countdown. Aber, wenn ich die gleiche Taste erneut drücke, muss der Timer zurückgesetzt werden und einen weiteren Countdown (mit einer anderen Zeit, die von meinem Programm definiert ist, aber jetzt ist dies irrelevant).Reset-Taste in einem Countdown-Timer

Gibt es eine Möglichkeit, dass ich diese Reset innerhalb der gleichen button_click tun kann? Vielleicht überprüft, ob die Taste erneut angeklickt wurde, damit ich die Timerwerte zurücksetzen kann?

Ich habe dieses Zeitgeberablaufstatusbit

private int milliSecondsLeft = 0; 
private int t = 0; 
private bool timeSet = false; 
private void timer2_Tick(object sender, EventArgs e) 
{ 
    string timeOp = dataGridView1.Rows[t].Cells[5].Value + ""; 
    t++; 
    DateTime timeConvert; 
    DateTime dateTime = DateTime.Now; 

    if (!timeSet) 
    { 
     DateTime.TryParse(timeOp, out timeConvert); 
     milliSecondsLeft = (int)timeConvert.TimeOfDay.TotalMilliseconds; 
     timeSet = true; 
     timeSetNxt = false; 
    } 

    milliSecondsLeft = milliSecondsLeft - 1000; 

    if (milliSecondsLeft > 0) 
    { 
     var span = new TimeSpan(0, 0, 0, 0, milliSecondsLeft); 
     lblLeft.Text = span.ToString(@"hh\:mm\:ss"); 
    } 
    else 
    { 
     timer2.Stop(); 
    } 
} 

und dieses button_click

jedes Mal, wenn ich meine Taste es t++; geht drücken, dann liest es ein andermal Wert auf meinem Datagrid. das ist, warum es zurücksetzen müssen erstellt werden soll für die Logik, die Sie

int t = 1; 
private void btn2_Click(object sender, EventArgs e) 
{ 
    timer2.Start(); 
    lblLeft.Text = dataGridView1.Rows[t].Cells[5].Value.ToString(); 
    string value = dataGridView1.Rows[t].Cells[5].Value.ToString(); 
    lblLeft.Text = value.ToString(); 
    t++; 
} 
+0

Wo ist Ihr Code! Was hast du bisher versucht? – Marusyk

+0

Um 'timer2' zurückzusetzen, rufen Sie einfach 'Stop()' und dann 'Start()' auf (wenn Sie die Logik "get value once" ausführen müssen, dann setzen Sie 'timeSet' zurück). Die Logik und das Problem sind nicht sehr klar erklärt (z.B. was ist "Timer3" plötzlich?). – Sinatr

+0

@Sinatr hat die Nummer in ein paar Tests geändert, vergessen, sie wieder auf den ursprünglichen Wert zu setzen, sorry D: – MattDAVM

Antwort

1

Sie könnten nutzen die Tag Eigenschaft des Button ein Flag setzen. auf der Schaltfläche klicken Ereignis

if (btnExample.Tag==0) 
{ 
    btnExample.Tag=1; 
    //call startCountDown function 
} 
else 
{ 
    btnExample.Tag=0; 
    // call reset 
} 
+0

Wie kann ich das Tag verwenden? – MattDAVM

+0

Stellen Sie sicher, dass Sie wissen, was zu tun ist, bevor Sie den Code schreiben. Es ist einfacher so. – Bogoljub

1

Zeigen Sie Ihren Timer-Code. Um die Anzahl der Resets zu erhalten. Verwenden Sie den folgenden Code.

int button_clicked = new int(); 

    private void button1_Click(object sender, EventArgs e) 
    { 
     // How many times you have Reset 
     button_clicked++; 
     // Your Timer Code 
    } 

Starten Sie einfach einen neuen Timer mit jedem Klick. Entsorgen Sie auch den letzten. Sie können button_clicked verwenden zu wissen, ob ein Timer gestartet wurde und verfügen daher, wenn die button_clicked > 0

+0

@MattDAVM Es wäre zu schätzen, wenn Sie die Frage sorgfältiger stellen. Du sagst '' Wenn ich den Knopf erneut drücke, möchte ich, dass dieser Wert wie "11:13:46" wird, aber warum willst du das. Was ist die Logik? –

+0

Ich habe ein Datagrid, das einige Zeitwerte hat Wenn ich die Taste drücke, wird dieser Wert als Timer-Countdown verwendet.Weil ich mehr als einen Wert darauf habe, muss das Programm bei jedem Drücken der Taste den Timer zurücksetzen und die nächste Zeile lesen und diese umwandeln Wert in einen Timer-Countdown – MattDAVM

1

Ich würde überprüfen, ob der Timer

aktiviert ist
if (!timer2.Enabled) StartTimer2(); 
else ResetTimer2(); 
+0

Ich versuchte diese Art von Situation, aber es hat nicht funktioniert – MattDAVM

+0

Was meinst du, es hat nicht funktioniert? –

+0

Zeit hat sich nicht zum nächsten Wert geändert. – MattDAVM

Verwandte Themen