Windows Forms: Timer und Fortschrittsbalken
Um in grafischen Oberflächen einen Fortschrittsbalken anzuzeigen, benötigen wir das Steuerelement ProgressBar. Um den Wert eines Fortschrittsbalkens zu steuern, gibt es die Eigenschaften Value sowie die Funktion PerformStep(). Mit Hilfe der Eigenschaft Value könnten wir den Fortschrittsbalken auch wieder zurücksetzen oder Sprünge durchführen. Die PerformStep()-Funktion ändert die Value-Eigenschaft immer um den Wert, welcher in der Eigenschaft Step hinterlegt ist. Um den Maximalwert eines ProgressBar-Steuerelements festzulegen, können wir die Eigenschaft Maximum setzen. Zusätzlich zum normalen fortlaufenden Balken in dem Fortschrittsbalken können wir auch einen Laufbalken erstellen. Dazu muss die Eigenschaft Style auf den Wert Marquee der Enumeration ProgressBarStyle geändert werden. Die Eigenschaft MarqueeAnimationSpeed legt die Geschwindigkeit des Laufbalkens fest. Wird die Eigenschaft auf null gesetzt, so hält die Animation und dadurch auch der Laufbalken an.
Der Timer ist ein spezielles Steuerelement, welches sich ebenfalls im Werkzeugkasten befindet und auf das Formular „gezogen“ wird, jedoch nicht auf dem Formular angezeigt wird. Das Timer-Steuerelement wird in einem Bereich unterhalb des Formulars angezeigt. Der Timer dient dazu, ein Event in einem bestimmten Rhythmus (Intervall) auszuführen. Über die Eigenschaft Intervall kann der Intervall des Timers in Millisekunden angegeben werden. Durch das Event Tick können wir eine Funktion registrieren, welche in dem vom Timer festgelegten Intervall ausgeführt werden soll. Das Timer-Steuerelement verfügt über die Funktion Start() und Stop(), um den Timer zu starten oder anzuhalten.
Form1.cs
private void buttonStart_Click(object sender, EventArgs e) { // Timer starten timerFortschritt.Start(); // Fortschrittsbalken zurücksetzen und -Animation vorbereiten progressBarTimerBlocks.Value = 0; progressBarTimerMarquee.MarqueeAnimationSpeed = 50; // Buttons-Aktivierung ändern buttonStart.Enabled = false; buttonStop.Enabled = true; } private void buttonStop_Click(object sender, EventArgs e) { // Timer stoppen timerFortschritt.Stop(); // Fortschrittsbalken-Animation stoppen progressBarTimerMarquee.MarqueeAnimationSpeed = 0; // Buttons-Aktivierung ändern buttonStart.Enabled = true; buttonStop.Enabled = false; } private void timerFortschritt_Tick(object sender, EventArgs e) { // Fortschrittsbalken bewegen progressBarTimerBlocks.PerformStep(); // Falls Maximum erreicht wurde, Timer stoppen (Event des Stop-Buttons aufrufen) if (progressBarTimerBlocks.Value == progressBarTimerBlocks.Maximum) buttonStop_Click(null, EventArgs.Empty); }