Практическое руководство. Установка значения, отображаемого элементом управления ProgressBar в Windows Forms
Важный
Элемент управления ToolStripProgressBar заменяет и добавляет функции в элемент управления ProgressBar; однако элемент управления ProgressBar сохраняется как для обратной совместимости, так и для дальнейшего использования, если вы выберете.
Платформа .NET Framework предоставляет несколько различных способов отображения заданного значения в элементе управления ProgressBar. Какой подход вы выберете, зависит от задачи или проблемы, которую вы решаете. В следующей таблице показаны подходы, которые можно выбрать.
Подход | Описание |
---|---|
Задайте значение элемента управления ProgressBar напрямую. | Этот подход полезен для задач, в которых вы знаете общее количество элементов, измеряемых, например чтение записей из источника данных. Кроме того, если необходимо задать значение один или два раза, это простой способ сделать это. Наконец, используйте этот процесс, если необходимо уменьшить отображаемое на индикаторе выполнения значение. |
Увеличьте отображение ProgressBar на фиксированную величину. | Этот подход полезен при отображении простого количества между минимальным и максимальным, например истекшее время или количество файлов, которые были обработаны из известного итогового значения. |
Увеличьте дисплей ProgressBar на изменяющееся значение. | Этот подход полезен, если необходимо изменить отображаемое значение несколько раз на разные величины. Примером будет отображение объема используемого жесткого диска во время записи ряда файлов на диск. |
Самый прямой способ установить значение, отображаемое индикатором выполнения, — это настройка свойства Value. Это можно сделать либо во время разработки, либо во время выполнения.
Установить значение для ProgressBar напрямую
Задайте значения Minimum и Maximum для элемента управления ProgressBar.
В коде задайте для свойства Value элемента управления целочисленное значение между установленными минимальными и максимальными значениями.
Заметка
Если задать свойство Value вне границ, установленных свойствами Minimum и Maximum, элемент управления вызывает исключение ArgumentException.
В следующем примере кода показано, как напрямую задать значение ProgressBar. Код считывает записи из источника данных и обновляет индикатор выполнения и метку при каждом чтении записи данных. В этом примере требуется, чтобы в форме был элемент управления Label, элемент управления ProgressBar и таблица данных со строкой, называемой
CustomerRow
, которая содержит поляFirstName
иLastName
.Public Sub CreateNewRecords() ' Sets the progress bar's Maximum property to ' the total number of records to be created. ProgressBar1.Maximum = 20 ' Creates a new record in the dataset. ' NOTE: The code below will not compile, it merely ' illustrates how the progress bar would be used. Dim anyRow As CustomerRow = DatasetName.ExistingTable.NewRow anyRow.FirstName = "Stephen" anyRow.LastName = "James" ExistingTable.Rows.Add(anyRow) ' Increases the value displayed by the progress bar. ProgressBar1.Value += 1 ' Updates the label to show that a record was read. Label1.Text = "Records Read = " & ProgressBar1.Value.ToString() End Sub
public void createNewRecords() { // Sets the progress bar's Maximum property to // the total number of records to be created. progressBar1.Maximum = 20; // Creates a new record in the dataset. // NOTE: The code below will not compile, it merely // illustrates how the progress bar would be used. CustomerRow anyRow = DatasetName.ExistingTable.NewRow(); anyRow.FirstName = "Stephen"; anyRow.LastName = "James"; ExistingTable.Rows.Add(anyRow); // Increases the value displayed by the progress bar. progressBar1.Value += 1; // Updates the label to show that a record was read. label1.Text = "Records Read = " + progressBar1.Value.ToString(); }
Если отображается прогресс, который развивается по фиксированному интервалу, можно задать значение, а затем вызвать метод, который увеличивает значение элемента управления ProgressBar на этот интервал. Это полезно для таймеров и других сценариев, когда вы не измеряете ход выполнения в процентах от всего.
Увеличение индикатора выполнения на фиксированную величину
Задайте значения Minimum и Maximum для элемента управления ProgressBar.
Установите для свойства Step элемента управления целое число, представляющее величину, на которую будет увеличено отображаемое значение индикатора выполнения.
Вызовите метод PerformStep, чтобы изменить отображаемое значение на величину, указанную в свойстве Step.
В следующем примере кода показано, как индикатор хода выполнения может поддерживать количество файлов в операции копирования.
В следующем примере каждый файл считывается в память, индикатор хода выполнения и метка обновляются, чтобы отразить общее количество операций чтения файлов. В этом примере требуется, чтобы в форме был элемент управления Label и элемент управления ProgressBar.
Public Sub LoadFiles() ' Sets the progress bar's minimum value to a number representing ' no operations complete -- in this case, no files read. ProgressBar1.Minimum = 0 ' Sets the progress bar's maximum value to a number representing ' all operations complete -- in this case, all five files read. ProgressBar1.Maximum = 5 ' Sets the Step property to amount to increase with each iteration. ' In this case, it will increase by one with every file read. ProgressBar1.Step = 1 ' Dimensions a counter variable. Dim i As Integer ' Uses a For...Next loop to iterate through the operations to be ' completed. In this case, five files are to be copied into memory, ' so the loop will execute 5 times. For i = 0 To 4 ' Insert code to copy a file ProgressBar1.PerformStep() ' Update the label to show that a file was read. Label1.Text = "# of Files Read = " & ProgressBar1.Value.ToString Next i End Sub
public void loadFiles() { // Sets the progress bar's minimum value to a number representing // no operations complete -- in this case, no files read. progressBar1.Minimum = 0; // Sets the progress bar's maximum value to a number representing // all operations complete -- in this case, all five files read. progressBar1.Maximum = 5; // Sets the Step property to amount to increase with each iteration. // In this case, it will increase by one with every file read. progressBar1.Step = 1; // Uses a for loop to iterate through the operations to be // completed. In this case, five files are to be copied into memory, // so the loop will execute 5 times. for (int i = 0; i <= 4; i++) { // Inserts code to copy a file progressBar1.PerformStep(); // Updates the label to show that a file was read. label1.Text = "# of Files Read = " + progressBar1.Value.ToString(); } }
Наконец, можно увеличить значение, отображаемое индикатором выполнения, так, чтобы каждое изменение было уникальным. Это полезно при отслеживании ряда уникальных операций, таких как запись файлов разных размеров на жесткий диск или измерение хода выполнения в процентах от всего.
Увеличение индикатора выполнения на динамическое значение
Установите значения Minimum и Maximum для элемента управления ProgressBar.
Вызовите метод Increment, чтобы изменить отображаемое значение заданного вами целого числа.
В следующем примере кода показано, как индикатор хода выполнения может вычислить, сколько дискового пространства использовалось во время операции копирования.
В следующем примере, так как каждый файл записывается на жесткий диск, индикатор хода выполнения и метка обновляются, чтобы отразить объем свободного места на жестком диске. В этом примере требуется, чтобы в форме был элемент управления Label и элемент управления ProgressBar.
Public Sub ReadFiles() ' Sets the progress bar's minimum value to a number ' representing the hard disk space before the files are read in. ' You will most likely have to set this using a system call. ' NOTE: The code below is meant to be an example and ' will not compile. ProgressBar1.Minimum = AvailableDiskSpace() ' Sets the progress bar's maximum value to a number ' representing the total hard disk space. ' You will most likely have to set this using a system call. ' NOTE: The code below is meant to be an example ' and will not compile. ProgressBar1.Maximum = TotalDiskSpace() ' Dimension a counter variable. Dim i As Integer ' Uses a For...Next loop to iterate through the operations to be ' completed. In this case, five files are to be written to the disk, ' so it will execute the loop 5 times. For i = 1 To 5 ' Insert code to read a file into memory and update file size. ' Increases the progress bar's value based on the size of ' the file currently being written. ProgressBar1.Increment(FileSize) ' Updates the label to show available drive space. Label1.Text = "Current Disk Space Used = " &_ ProgressBar1.Value.ToString() Next i End Sub
public void readFiles() { // Sets the progress bar's minimum value to a number // representing the hard disk space before the files are read in. // You will most likely have to set this using a system call. // NOTE: The code below is meant to be an example and // will not compile. progressBar1.Minimum = AvailableDiskSpace(); // Sets the progress bar's maximum value to a number // representing the total hard disk space. // You will most likely have to set this using a system call. // NOTE: The code below is meant to be an example // and will not compile. progressBar1.Maximum = TotalDiskSpace(); // Uses a for loop to iterate through the operations to be // completed. In this case, five files are to be written // to the disk, so it will execute the loop 5 times. for (int i = 1; i<= 5; i++) { // Insert code to read a file into memory and update file size. // Increases the progress bar's value based on the size of // the file currently being written. progressBar1.Increment(FileSize); // Updates the label to show available drive space. label1.Text = "Current Disk Space Used = " + progressBar1.Value.ToString(); } }
См. также
.NET Desktop feedback