Compartilhar via


Como: Defina o valor exibido pelo controle Windows Forms ProgressBar

Observação importanteImportante

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

  1. Definir o ProgressBar do controle Minimum e Maximum valores.

  2. 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çãoObservaçã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

  1. Definir o ProgressBar do controle Minimum e Maximum valores.

  2. Defina o controle Step a propriedade para um inteiro que representa o valor para aumentar a barra de progresso é exibida valor.

  3. 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

  1. Definir o ProgressBar do controle Minimum e Maximum valores.

  2. 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)

ProgressBar

ToolStripProgressBar

Outros recursos

Controle ProgressBar (Windows Forms)