Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Kontrolka ToolStripProgressBar zastępuje i dodaje funkcje do kontrolki ProgressBar; jednak kontrolka ProgressBar jest zachowywana w celu zachowania zgodności z poprzednimi wersjami i użycia w przyszłości, jeśli wybierzesz.
Program .NET Framework oferuje kilka różnych sposobów wyświetlania danej wartości w kontrolce ProgressBar. Wybrane podejście będzie zależeć od wybranego zadania lub problemu, który rozwiązujesz. W poniższej tabeli przedstawiono metody, które można wybrać.
Metoda | Opis |
---|---|
Ustaw bezpośrednio wartość kontrolki ProgressBar. | Takie podejście jest przydatne w przypadku zadań, w których wiadomo, że łączna liczba mierzonych elementów będzie brana pod uwagę, na przykład odczytywanie rekordów ze źródła danych. Ponadto, jeśli musisz ustawić tylko wartość raz lub dwa razy, jest to łatwy sposób, aby to zrobić. Na koniec użyj tego procesu, jeśli chcesz zmniejszyć wartość wyświetlaną na pasku postępu. |
Zwiększ wyświetlanie ProgressBar o stałą wartość. | Takie podejście jest przydatne, gdy wyświetlasz prostą liczbę z przedziału od minimalnej do maksymalnej, takiej jak czas upłynął lub liczba plików, które zostały przetworzone z znanej sumy. |
Zwiększ wyświetlanie ProgressBar o wartość, która się zmienia. | Takie podejście jest przydatne, gdy trzeba zmienić wyświetlaną wartość kilka razy w różnych kwotach. Przykładem może być pokazana ilość używanego miejsca na dysku twardym podczas zapisywania serii plików na dysku. |
Najbardziej bezpośrednim sposobem ustawienia wartości wyświetlanej przez pasek postępu jest ustawienie właściwości Value. Można to zrobić w czasie projektowania lub w czasie wykonywania.
Aby ustawić wartość paska postępu bezpośrednio
Ustaw wartości ProgressBar i Minimum kontrolki Maximum.
W kodzie ustaw właściwość Value kontrolki na wartość całkowitą pomiędzy ustalonymi wartościami minimalną a maksymalną.
Uwaga / Notatka
Jeśli ustawisz właściwość Value poza granicami określonymi przez właściwości Minimum i Maximum, kontrolka zgłasza wyjątek ArgumentException.
W poniższym przykładzie kodu pokazano, jak ustawić wartość ProgressBar bezpośrednio. Kod odczytuje rekordy ze źródła danych i aktualizuje pasek postępu i etykietę za każdym razem, gdy rekord danych jest odczytywany. W tym przykładzie formularz ma kontrolkę Label, kontrolkę ProgressBar oraz tabelę danych z wierszem o nazwie
CustomerRow
z polamiFirstName
iLastName
.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(); }
Jeśli wyświetlasz postęp, który jest kontynuowany przez stały interwał, możesz ustawić wartość, a następnie wywołać metodę, która zwiększa wartość kontrolki ProgressBar o ten interwał. Jest to przydatne w przypadku czasomierzy i innych scenariuszy, w których nie mierzysz postępu jako procentu całości.
Aby zwiększyć pasek postępu o stałą wartość
Ustaw wartości ProgressBar i Minimum kontrolki Maximum.
Ustaw właściwość Step kontrolki na liczbę całkowitą reprezentującą kwotę, aby zwiększyć wyświetlaną wartość paska postępu.
Wywołaj metodę PerformStep, aby zmienić wartość wyświetlaną o kwotę ustawioną we właściwości Step.
Poniższy przykład kodu ilustruje, jak pasek postępu może zachować liczbę plików w operacji kopiowania.
W poniższym przykładzie, ponieważ każdy plik jest odczytywany do pamięci, pasek postępu i etykieta są aktualizowane w celu odzwierciedlenia całkowitej liczby odczytanych plików. Ten przykład wymaga, aby formularz miał kontrolkę Label i kontrolkę 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(); } }
Na koniec możesz zwiększyć wartość wyświetlaną na pasku postępu, aby każdy wzrost był unikatową kwotą. Jest to przydatne w przypadku śledzenia serii unikatowych operacji, takich jak zapisywanie plików o różnych rozmiarach na dysku twardym lub mierzenie postępu jako procent całości.
Aby zwiększyć pasek postępu o wartość dynamiczną
Ustaw wartości ProgressBar i Minimum kontrolki Maximum.
Wywołaj metodę Increment, aby zmienić wartość wyświetlaną przez liczbą całkowitą, którą określisz.
Poniższy przykład kodu ilustruje, jak pasek postępu może obliczyć ilość miejsca na dysku podczas operacji kopiowania.
W poniższym przykładzie, ponieważ każdy plik jest zapisywany na dysku twardym, pasek postępu i etykieta są aktualizowane w celu odzwierciedlenia ilości dostępnego miejsca na dysku twardym. Ten przykład wymaga, aby formularz miał kontrolkę Label i kontrolkę 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(); } }
Zobacz także
.NET Desktop feedback