Sdílet prostřednictvím


Postupy: Nastavení hodnoty zobrazené ovládacím prvkem Windows Forms ProgressBar

Důležité

Ovládací prvek ToolStripProgressBar nahrazuje a přidává funkce do ovládacího prvku ProgressBar; ovládací prvek ProgressBar je však zachován pro zpětnou kompatibilitu i budoucí použití, pokud zvolíte.

Rozhraní .NET Framework nabízí několik různých způsobů zobrazení dané hodnoty v ovládacím prvku ProgressBar. Který přístup, který zvolíte, bude záviset na úkolu nebo na problému, který řešíte. Následující tabulka uvádí přístupy, které můžete zvolit.

Přístup Popis
Nastavte hodnotu ovládacího prvku ProgressBar přímo. Tento přístup je užitečný pro úlohy, ve kterých znáte celkové množství měřené položky, které se budou zapojovat, například čtení záznamů ze zdroje dat. Navíc pokud potřebujete nastavit hodnotu jen jednou nebo dvakrát, je to snadný způsob, jak to udělat. Nakonec tento proces použijte, pokud potřebujete snížit hodnotu zobrazenou indikátorem průběhu.
Zvyšte zobrazení ProgressBar o pevnou hodnotu. Tento přístup je užitečný, když zobrazujete jednoduchý počet mezi minimálním a maximálním počtem, například uplynulým časem nebo počtem zpracovaných souborů ze známého součtu.
Zvyšte hodnotu zobrazení ProgressBar, která se liší. Tento přístup je užitečný, když potřebujete změnit zobrazenou hodnotu kolikrát v různých částkách. Příklad ukazuje množství místa na pevném disku, které se spotřebovává při zápisu řady souborů na disk.

Nejpřímější způsob, jak nastavit hodnotu zobrazenou indikátorem průběhu, je nastavení vlastnosti Value. To lze provést buď v době návrhu, nebo v době běhu.

Nastavte hodnotu ProgressBar přímo

  1. Nastavte hodnoty ProgressBar a Minimum ovládacího prvku Maximum.

  2. V kódu nastavte vlastnost Value ovládacího prvku na celočíselnou hodnotu mezi minimálními a maximálními hodnotami, které jste vytvořili.

    Poznámka:

    Pokud nastavíte vlastnost Value mimo hranice, které vytvořily vlastnosti Minimum a Maximum, ovládací prvek vyvolá výjimku ArgumentException.

    Následující příklad kódu ukazuje, jak nastavit ProgressBar hodnotu přímo. Kód čte záznamy ze zdroje dat a aktualizuje indikátor průběhu a popisek při každém čtení datového záznamu. Tento příklad vyžaduje, aby formulář obsahuje ovládací prvek Label, ovládací prvek ProgressBar a tabulku dat s řádkem, který se nazývá CustomerRow s poli FirstName a 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();
    }
    

    Pokud zobrazujete průběh, který pokračuje pevným intervalem, můžete nastavit hodnotu a potom volat metodu, která zvýší hodnotu ovládacího prvku ProgressBar podle daného intervalu. To je užitečné pro časovače a další scénáře, kdy neměříte průběh jako procento celku.

Zvýšení indikátoru průběhu o pevnou hodnotu

  1. Nastavte hodnoty ProgressBar a Minimum ovládacího prvku Maximum.

  2. Nastavte vlastnost Step ovládacího prvku na celé číslo, které představuje množství, o které se má zvýšit hodnota zobrazená na indikátoru průběhu.

  3. Voláním metody PerformStep změňte hodnotu zobrazenou hodnotou nastavenou v Step vlastnosti.

    Následující příklad kódu ukazuje, jak indikátor průběhu může udržovat počet souborů v operaci kopírování.

    V následujícím příkladu se při čtení jednotlivých souborů do paměti aktualizuje indikátor průběhu a popisek tak, aby odrážely celkový počet načtených souborů. Tento příklad vyžaduje, aby formulář obsahuje ovládací prvek Label a ovládací prvek 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();
       }
    }
    

    Nakonec můžete zvýšit hodnotu zobrazenou indikátorem průběhu, aby každé zvýšení bylo jedinečné. To je užitečné, když sledujete řadu jedinečných operací, jako je zápis souborů různých velikostí na pevný disk nebo měření průběhu v procentech celku.

Zvýšit indikátor průběhu o dynamickou hodnotu

  1. Nastavte hodnoty ProgressBar a Minimum ovládacího prvku Maximum.

  2. Voláním metody Increment změňte hodnotu zobrazenou celočíselnou hodnotou, kterou zadáte.

    Následující příklad kódu ukazuje, jak indikátor průběhu může vypočítat, kolik místa na disku bylo použito během operace kopírování.

    V následujícím příkladu se při zápisu jednotlivých souborů na pevný disk aktualizuje indikátor průběhu a popisek tak, aby odrážely dostupné místo na pevném disku. Tento příklad vyžaduje, aby formulář obsahuje ovládací prvek Label a ovládací prvek 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();
       }
    }
    

Viz také