Как использовать 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;
}
