Share via


Comment : définir la valeur affichée par le contrôle ProgressBar Windows Forms

Important

Le contrôle ToolStripProgressBar remplace le contrôle ProgressBar et lui ajoute des fonctionnalités ; toutefois, le contrôle ProgressBar est conservé pour la compatibilité descendante et l'utilisation future si tel est votre choix.

Le .NET Framework vous donne plusieurs façons d’afficher une valeur donnée dans le ProgressBar contrôle. Quelle approche vous choisissez dépend de la tâche à la main ou du problème que vous résolvez. Le tableau suivant présente les approches que vous pouvez choisir.

Approche Description
Définissez directement la valeur du ProgressBar contrôle. Cette approche est utile pour les tâches où vous connaissez le total de l’élément mesuré qui sera impliqué, par exemple la lecture d’enregistrements à partir d’une source de données. En outre, si vous n’avez besoin de définir la valeur qu’une ou deux fois, il s’agit d’un moyen simple de le faire. Enfin, utilisez ce processus si vous devez réduire la valeur affichée par la barre de progression.
Augmentez l’affichage ProgressBar par une valeur fixe. Cette approche est utile lorsque vous affichez un nombre simple entre le minimum et le maximum, tel que le temps écoulé ou le nombre de fichiers qui ont été traités hors d’un total connu.
Augmentez l’affichage ProgressBar par une valeur qui varie. Cette approche est utile lorsque vous devez modifier la valeur affichée plusieurs fois en différentes quantités. Un exemple montre la quantité d’espace disque consommé lors de l’écriture d’une série de fichiers sur le disque.

La façon la plus directe de définir la valeur affichée par une barre de progression consiste à définir la Value propriété. Cette opération peut être effectuée au moment du design ou au moment de l’exécution.

Pour définir la valeur ProgressBar directement

  1. Définissez les ProgressBar valeurs et Maximum les valeurs du Minimum contrôle.

  2. Dans le code, définissez la propriété du Value contrôle sur une valeur entière comprise entre les valeurs minimales et maximales que vous avez établies.

    Remarque

    Si vous définissez la Value propriété en dehors des limites établies par les propriétés et Maximum les Minimum propriétés, le contrôle lève une ArgumentException exception.

    L’exemple de code suivant montre comment définir la ProgressBar valeur directement. Le code lit les enregistrements d’une source de données et met à jour la barre de progression et l’étiquette chaque fois qu’un enregistrement de données est lu. Cet exemple nécessite que votre formulaire dispose d’un Label contrôle, d’un ProgressBar contrôle et d’une table de données avec une ligne appelée CustomerRow avec FirstName et LastName des champs.

    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();  
    }  
    

    Si vous affichez la progression qui passe par un intervalle fixe, vous pouvez définir la valeur, puis appeler une méthode qui augmente la ProgressBar valeur du contrôle par cet intervalle. Cela est utile pour les minuteurs et d’autres scénarios où vous ne mesurez pas la progression sous la forme d’un pourcentage de l’ensemble.

Pour augmenter la barre de progression par une valeur fixe

  1. Définissez les ProgressBar valeurs et Maximum les valeurs du Minimum contrôle.

  2. Définissez la propriété du Step contrôle sur un entier représentant la quantité pour augmenter la valeur affichée de la barre de progression.

  3. Appelez la PerformStep méthode pour modifier la valeur affichée par le montant défini dans la Step propriété.

    L’exemple de code suivant montre comment une barre de progression peut conserver un nombre de fichiers dans une opération de copie.

    Dans l’exemple suivant, à mesure que chaque fichier est lu en mémoire, la barre de progression et l’étiquette sont mises à jour pour refléter le nombre total de fichiers lus. Cet exemple nécessite que votre formulaire dispose d’un Label contrôle et d’un ProgressBar contrôle.

    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();  
       }  
    }  
    

    Enfin, vous pouvez augmenter la valeur affichée par une barre de progression afin que chaque augmentation soit un montant unique. Cela est utile lorsque vous effectuez le suivi d’une série d’opérations uniques, telles que l’écriture de fichiers de différentes tailles sur un disque dur ou la mesure de la progression sous la forme d’un pourcentage de l’ensemble.

Pour augmenter la barre de progression par une valeur dynamique

  1. Définissez les ProgressBar valeurs et Maximum les valeurs du Minimum contrôle.

  2. Appelez la Increment méthode pour modifier la valeur affichée par un entier que vous spécifiez.

    L’exemple de code suivant montre comment une barre de progression peut calculer la quantité d’espace disque utilisé pendant une opération de copie.

    Dans l’exemple suivant, à mesure que chaque fichier est écrit sur le disque dur, la barre de progression et l’étiquette sont mises à jour pour refléter la quantité d’espace disque disponible. Cet exemple nécessite que votre formulaire dispose d’un Label contrôle et d’un ProgressBar contrôle.

    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();  
       }  
    }  
    

Voir aussi