Habe das jetztzt mal so gemacht wie du vorgeschlagen hast.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| private const int maxSteps = 100; private int steps; private void tmrUhr_Tick(object sender, EventArgs e) { if (steps == 0) { MessageBox.Show("Bäm"); Process.Start("ShutDown", "/a"); tmrUhr.Enabled = false; Close(); }
pbRemaining.Value = (pbRemaining.Width / maxSteps) * steps; steps--; } |
in btnStart_Click den Call zu Process.Start entfernen, das mache ich lieber nach Ablauf aus dem Timer, und durch starten des Timers ersetzen z.B.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| private void btnStart_Click(object sender, EventArgs e) { int stunde = int.Parse(txtStunde.Text) * 3600; int minute = int.Parse(txtMinute.Text) * 60; int sekunde = int.Parse(txtSekunde.Text);
int ende = stunde + minute + sekunde; var result = DateTime.Now.AddSeconds(+ende); var sek = ende.ToString();
lblDown.Text = "um: " + result.ToString("HH:mm:ss");
int minuten = ende / 60;
sslRemaining.Text = "min: " + minuten.ToString();
steps = maxSteps; pbRemaining.Value = 0; tmrUhr.Interval = (ende * 1000) / maxSteps; tmrUhr.Enabled = true;
} |
Die Progressbar macht keine Reaktion, aber jede Sekunde bekomme ich die MessageBox.Show("Bäm") ausgegeben. Wenn der Grüne Balken in der Progressbar jede Sekunde wachsen würde oder eben kleiner würde wäre das Problem schon gelöst. Irgend etwas willst du mir sagen ich komme jedoch nicht darauf.???
Weiterhin erhalte ich eine NullReferenceException für die Zeile pbRemaining.Value = (pbRemaining.Width / maxSteps) * steps;