Windows Forms: Timer und Fortschrittsbalken

Timer und FortschrittsbalkenUm 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);
}
Download

LinksRechts