Como: Defina o valor exibido pelo controle Windows Forms ProgressBar
Importante |
---|
O ToolStripProgressBar controle substitui e adiciona funcionalidade para o ProgressBar controle; No entanto, o ProgressBar controle é mantido para compatibilidade com versões anteriores e o uso futuro, se você escolher. |
O .NET Framework lhe oferece várias maneiras de exibir um determinado valor dentro do ProgressBar de controle. Qual abordagem escolhida dependerá da tarefa à mão ou são a solução do problema. A tabela a seguir mostra as abordagens que você pode escolher.
Abordagem |
Descrição |
---|---|
Definir o valor de ProgressBar de controle diretamente. |
Essa abordagem é útil para tarefas, onde você sabe que o total do item medido será envolvido, como ler os registros de uma fonte de dados. Além disso, você só precisará definir o valor de uma ou duas vezes, isso é uma maneira fácil de fazê-lo. Finalmente, use esse processo, se você precisar diminuir o valor exibido pela barra de progresso. |
Aumentar a ProgressBar Exibir um valor fixo. |
Essa abordagem é útil quando você está exibindo uma contagem simple entre o mínimo e máximo, como, por exemplo, tempo decorrido ou o número de arquivos que foram processadas fora de um total de conhecidos. |
Aumentar a ProgressBar Exibir por um valor que varia. |
Essa abordagem é útil quando você precisar alterar o valor exibido um número de vezes em quantidades diferentes. Um exemplo poderia ser mostrando a quantidade de espaço em disco rígido sendo consumida durante a gravação de uma série de arquivos no disco. |
O modo mais direto para definir o valor exibido por uma barra de progresso está definindo a Value propriedade. Isso pode ser feito em tempo de design ou em tempo de execução.
Para definir o valor de ProgressBar diretamente
Definir o ProgressBar do controle Minimum e Maximum valores.
No código, defina o controle Value a propriedade para um valor inteiro entre os valores mínimos e máximo que você estabeleceu.
Observação Se você definir a Value propriedade fora dos limites estabelecidos pela Minimum e Maximum o controle de propriedades, lança um ArgumentException exceção.
O exemplo de código a seguir ilustra como definir o ProgressBar valor diretamente. O código lê os registros de uma fonte de dados e atualiza a barra de progresso e o rótulo sempre que um registro de dados é lido. Este exemplo requer que o formulário tem um Label o controle, uma ProgressBar controle e uma tabela de dados com uma linha chamada CustomerRow com FirstName e Last Name campos.
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(); }
Se você estiver exibindo o progresso que passa por um intervalo fixo, você pode definir o valor e, em seguida, chamar um método que aumenta a ProgressBar o valor do controle pelo intervalo. Isso é útil para os temporizadores e outros cenários onde você não esteja medindo andamento como uma porcentagem do todo.
Para aumentar a barra de progresso por um valor fixo
Definir o ProgressBar do controle Minimum e Maximum valores.
Defina o controle Step a propriedade para um inteiro que representa o valor para aumentar a barra de progresso é exibida valor.
Chamar o PerformStep método para alterar o valor exibido pelo valor definido Step propriedade.
O exemplo de código a seguir ilustra como uma barra de progresso pode manter uma contagem dos arquivos em uma operação de cópia.
No exemplo a seguir, como cada arquivo é lido na memória, a barra de progresso e o rótulo são atualizados para refletir a que leitura do total de arquivos. Este exemplo requer que o formulário tem um Label controle e um ProgressBar de controle.
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(); } }
Finalmente, você pode aumentar o valor exibido por uma barra de progresso para que cada aumento é um valor exclusivo. Isso é útil quando você estiver controlando de uma série de operações exclusivas, como, por exemplo, a gravação de arquivos de tamanhos diferentes em um disco rígido ou avaliar o progresso como uma porcentagem do todo.
Para aumentar a barra de progresso por um valor dinâmico
Definir o ProgressBar do controle Minimum e Maximum valores.
Chamar o Increment método para alterar o valor exibido por um número inteiro que você especificar.
O exemplo de código a seguir ilustra como uma barra de progresso pode calcular de quanto espaço em disco foi usado durante uma operação de cópia.
No exemplo a seguir, como cada arquivo é gravado no disco rígido, a barra de progresso e o rótulo são atualizados para refletir a quantidade de espaço em disco disponível. Este exemplo requer que o formulário tem um Label controle e um ProgressBar de controle.
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(); } }
Consulte também
Referência
Visão geral do controle ProgressBar (Windows Forms)