Как использовать ProgressBar в C#
В этом примере показано, как использовать ProgressBar, чтобы показать ход выполнения долгого задания. Это очень простой пример, который выполняет синхронную задачу.
Я создал ProgressBar во время разработки. Я оставил свойство Minimum равным 0 и его свойство Maximum установлено равным 100, хотя вы можете изменить эти значения, если хотите.
Когда вы нажимаете кнопку «Перейти», выполняется следующий код.
private void btnGo_Click(object sender, EventArgs e) { long max = long.Parse(txtMax.Text, NumberStyles.Any); long tenth = max / 10; long leftover = max - 9 * tenth; prgCount.Show(); for (int round = 0; round < 9; round++) { prgCount.Value = round * 10; for (long i = 0; i < tenth; i++) { } } prgCount.Value = 90; for (long i = 0; i < leftover; i++) { } prgCount.Value = 100; tmrHideProgressBar.Enabled = true; }
Этот код читает номер, введенный в текстовое поле, и делит его на 10. Затем он выполняет 9 циклов. Во время каждого цикла программа обновляет ProgressBar, чтобы отобразить объем выполняемой задачи, а затем подсчитывает до 1/10 значения, которое вы ввели.
После завершения 9 циклов программа подсчитывает все оставшиеся числа, которые вы указали. Если общее число равномерно делится на 10, то это последний 1/10 числа. Если сумма не делится на 10, то это все, что осталось после 9 циклов.
Все эти петли просто моделируют длительную задачу. В реальной программе вы бы сделали что-то более полезное, как обработка записей в базе данных.
После этого последнего цикла программа завершена, чтобы скрыть ProgressBar. К сожалению, если вы это сделаете, ProgressBar исчезает так быстро, что пользователь не видит его на 100%, и это кажется немного неудобным. (Попробуйте и посмотрите.)
Чтобы этого избежать, программа включает Timer с именем tmrHideProgressBar. В следующем коде показан обработчик события Tick таймера.
private void tmrHideProgressBar_Tick(object sender, EventArgs e) { prgCount.Hide(); tmrHideProgressBar.Enabled = false; }