Как сделать progress bar c
Перейти к содержимому

Как сделать progress bar c

  • автор:

Практическое руководство. Установка значения, отображаемого c помощью элемента управления ProgressBar в Windows Forms

Элемент управления ToolStripProgressBar заменяет элемент управления ProgressBar и расширяет его функциональные возможности; однако при необходимости элемент управления ProgressBar можно сохранить для обратной совместимости и использования в будущем.

Платформа .NET Framework предоставляет несколько различных способов отображения заданного значения в элементе управления ProgressBar. Ваш подход будет зависеть от вашей задачи. В следующей таблице приведены доступные подходы.

Подход Description
Задайте значение элемента управления ProgressBar напрямую. Этот подход можно использовать для задач, в которых вы знаете общее количество элементов, например для чтения записей из источника данных. Кроме того, если вам нужно задать значение только один или два раза, это простой способ сделать это. Наконец, используйте этот процесс, если необходимо уменьшить значение, отображаемое индикатором выполнения.
Увеличьте отображение ProgressBar на фиксированное значение. Этот подход можно использовать при отображении простого счетчика между минимальным и максимальным значениями, например затраченным временем или количеством обработанных файлов из известного общего числа.
Увеличьте отображение ProgressBar на изменяемое значение. Этот подход можно использовать, если необходимо изменить отображаемое значение несколько раз в разных объемах. В примере показано, сколько места на жестком диске потребляется при записи ряда файлов на диск.

Самый прямой способ задать значение, отображаемое индикатором выполнения, — задать свойство Value. Это можно сделать во время разработки или во время выполнения.

Установка значения ProgressBar напрямую

  1. Задайте значения Minimum и Maximum элемента управления ProgressBar.
  2. В коде задайте для свойства элемента управления Value целочисленное значение между установленными минимальным и максимальным значениями.

Примечание. Если свойство Value задается вне границ, установленных свойствами Minimum и Maximum, элемент управления создает исключение ArgumentException.

В следующем примере кода показано, как задать значение ProgressBar напрямую. Код считывает записи из источника данных и обновляет индикатор выполнения и метку при каждом чтении записи данных. В этом примере требуется, чтобы в форме был элемент управления Label, элемент управления ProgressBar и таблица данных со строкой, вызываемой CustomerRow с полями FirstName и 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(); >

Увеличение индикатора выполнения на фиксированное значение

  1. Задайте значения Minimum и Maximum элемента управления ProgressBar.
  2. Задайте для свойства Step элемента управления целое число, представляющее сумму для увеличения отображаемого значения индикатора выполнения.
  3. Вызовите метод PerformStep, чтобы изменить значение, отображаемое значением, заданным в свойстве Step. В следующем примере кода показано, как индикатор выполнения может поддерживать количество файлов в операции копирования. В следующем примере каждый файл считывается в память, а индикатор выполнения и метка обновляются в соответствии с общим числом прочитанных файлов. В этом примере требуется, чтобы форма содержала элемент управления Label и элемент управления 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 > 

Увеличение индикатора выполнения на динамическое значение

  1. Задайте значения Minimum и Maximum элемента управления ProgressBar.
  2. Вызовите метод Increment, чтобы изменить значение, отображаемое указанным целым числом. В следующем примере кода показано, как индикатор выполнения может вычислить, сколько дискового пространства использовалось во время операции копирования. В следующем примере, когда каждый файл записывается на жесткий диск, индикатор выполнения и метка обновляются и отражают объем доступного места на жестком диске. В этом примере требуется, чтобы форма содержала элемент управления Label и элемент управления 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> 

См. также

  • ProgressBar
  • ToolStripProgressBar
  • Общие сведения об элементе управления ProgressBar
  • Элемент управления ProgressBar

Создать progressBar с заполнением в течении 3 секунд

Author24 — интернет-сервис помощи студентам

Суть создать progressBar , который будет заполняться 3 секунды. Он должен начинать заполняться по открытию формы. Тоеть , к примеру , с другой формы по кнопке переходит на форму с прогрессБаром и он начинает автоматически заполнятся

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Заполнение progressbar в течении 3 секунд
на форме прогрессбар и лабел. Необходимо заполнять прогресс бар в течении 3х секунд и в label.

Как создать цикл, который будет выполнять тело цикла раз в секунду в течении 5 секунд?
Здравствуйте , подскажите пожалуйста , как создать цикл , который будет выполнять тело цикла раз в.

ProgressBar — заполнение в течении 30 минут
Доброго времени суток, помоги пожалуйста, у меня на форме есть ТАймер и прогресс бар, как сделать.

Функция, меняющая переменную в течении 20 секунд
Нужна ф-ция, которая будет записывать в переменную значения из массива в течении 20 секунд.

2792 / 1666 / 880
Регистрация: 14.04.2015
Сообщений: 5,662

Лучший ответ

Сообщение было отмечено AngreOptinus как решение

Решение

AngreOptinus, и в чем проблема?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
using System; using System.Windows.Forms; namespace WindowsFormsApp33 { public partial class Form2 : Form { public Form2() { InitializeComponent(); progressBar1.Maximum = 2; } private void Form2_Load(object sender, EventArgs e) { FillProgressBar(); } private void FillProgressBar() { for (int i = 0; i  2; i++) { System.Threading.Thread.Sleep(1000); progressBar1.Value = i; } } } }

само собой Form2_Load нужно создать через события второй формы.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

При старте мышка не реагирует в течении 6-7 секунд
В общем такая проблема. Искал на этом форуме и на других формах ответа, но не нашел. При старте.

Если ответ от сервера не пришел в течении 45 секунд то
Нужно сделать так: Отсылаем реквест.Если через 45 секунд ответ не пришел или пришел,но.

Выдача сигнала в течении 80 секунд после команды (Step 7)
Нужна помощь в написании программ в Step 7: 1 Создать программу обеспечивающая выдачу сигнала в.

Не могу входить в инет в течении 1 минуты 34 секунд после включения компа(((
Случилось это уже давно. думаю что это вирус. но антивири аваст и каспер не находят! ща стоит.

Таймер: если положение объекта не изменяется по X в течении 5 секунд, то объект уничтожается
если положение обьекта не изменяется по X в течении 5 секунд то обьект уничтожается. как сделать с#

При наведении на кнопку заливать фон слева направо в течении двух секунд
Доброго времени суток! хочу спросить, как мне сделать так, чтобы при наведении на кнопку фон.

Или воспользуйтесь поиском по форуму:

Использование Visual C# для создания плавного индикатора выполнения

В этой статье содержатся сведения о создании пользовательского элемента управления UserControl для создания плавного прокручиваемого элемента управления ProgressBar.

Исходная версия продукта: Visual C #
Исходный номер базы знаний: 323116

Аннотация

В этой статье показано, как создать простой настраиваемый элемент управления UserControl для создания плавного прокручиваемого элемента управления ProgressBar.

В более ранних версиях элемента управления ProgressBar, таких как версия, которая предоставляется вместе с элементом ActiveX «Общие элементы управления Microsoft Windows», ход выполнения можно просматривать в двух разных представлениях. Чтобы управлять этими представлениями, используйте свойство Scrolling, которое включает стандартные и плавные параметры. При плавной прокрутке создается сплошной цветной блок, который представляет ход выполнения, а стандартная прокрутка выглядит сегментированной и состоит из ряда небольших блоков или прямоугольников.

Элемент управления ProgressBar, входящий в состав Microsoft Visual C#, поддерживает только стандартный параметр.

В примере кода в этой статье показано, как создать элемент управления, поддерживающий следующие свойства:

  • Минимум. Это свойство получает или задает меньшее значение для диапазона допустимых значений для хода выполнения. Значение по умолчанию для этого свойства равно нулю (0); Для этого свойства нельзя задать отрицательное значение.
  • Максимум: это свойство получает или задает верхнее значение для диапазона допустимых значений для хода выполнения. Значение по умолчанию для этого свойства — 100.
  • Значение: это свойство получает или задает текущий уровень хода выполнения. Значение должно находиться в диапазоне, определяемом свойствами Минимум и Максимум.
  • ProgressBarColor: это свойство получает или задает цвет индикатора выполнения.

Создание пользовательского элемента управления ProgressBar

  1. Чтобы создать проект библиотеки элементов управления Windows в Visual C#, выполните следующие действия:
    1. Запустите Microsoft Visual Studio.
    2. В меню Файл выберите пункт Создать и затем пункт Проект.
    3. В диалоговом окне Новый проект щелкните Visual C# в разделе Типы проектов, а затем выберите Windows Forms библиотека элементов управления в разделе Шаблоны.
    4. В поле Имя введите SmoothProgressBar и нажмите кнопку ОК.
    5. В обозревателе проектов переименуйте модуль класса по умолчанию с UserControl1.cs в SmoothProgressBar.cs.
    6. В окне Свойства объекта UserControl измените свойство Name с UserControl1 на SmoothProgressBar.
    int min = 0;// Minimum value for progress range int max = 100;// Maximum value for progress range int val = 0;// Current progress Color BarColor = Color.Blue;// Color of progress meter protected override void OnResize(EventArgs e) < // Invalidate the control to get a repaint. this.Invalidate(); >protected override void OnPaint(PaintEventArgs e) < Graphics g = e.Graphics; SolidBrush brush = new SolidBrush(BarColor); float percent = (float)(val - min) / (float)(max - min); Rectangle rect = this.ClientRectangle; // Calculate area for drawing the progress. rect.Width = (int)((float)rect.Width * percent); // Draw the progress meter. g.FillRectangle(brush, rect); // Draw a three-dimensional border around the control. Draw3DBorder(g); // Clean up. brush.Dispose(); g.Dispose(); >public int Minimum < get < return min; >set < // Prevent a negative value. if (value < 0) < value = 0; >// Make sure that the minimum value is never set higher than the maximum value. if (value > max) < max = value; >min = value; // Ensure value is still in range if (val < min) < val = min; >// Invalidate the control to get a repaint. this.Invalidate(); > > public int Maximum < get < return max; >set < // Make sure that the maximum value is never set lower than the minimum value. if (value < min) < min = value; >max = value; // Make sure that value is still in range. if (val > max) < val = max; >// Invalidate the control to get a repaint. this.Invalidate(); > > public int Value < get < return val; >set < int oldValue = val; // Make sure that the value does not stray outside the valid range. if (value < min) < val = min; >else if (value > max) < val = max; >else < val = value; >// Invalidate only the changed area. float percent; Rectangle newValueRect = this.ClientRectangle; Rectangle oldValueRect = this.ClientRectangle; // Use a new value to calculate the rectangle for progress. percent = (float)(val - min) / (float)(max - min); newValueRect.Width = (int)((float)newValueRect.Width * percent); // Use an old value to calculate the rectangle for progress. percent = (float)(oldValue - min) / (float)(max - min); oldValueRect.Width = (int)((float)oldValueRect.Width * percent); Rectangle updateRect = new Rectangle(); // Find only the part of the screen that must be updated. if (newValueRect.Width > oldValueRect.Width) < updateRect.X = oldValueRect.Size.Width; updateRect.Width = newValueRect.Width - oldValueRect.Width; >else < updateRect.X = newValueRect.Size.Width; updateRect.Width = oldValueRect.Width - newValueRect.Width; >updateRect.Height = this.Height; // Invalidate the intersection region only. this.Invalidate(updateRect); > > public Color ProgressBarColor < get < return BarColor; >set < BarColor = value; // Invalidate the control to get a repaint. this.Invalidate(); >> private void Draw3DBorder(Graphics g)

    Создание примера клиентского приложения

    1. В меню Файл выберите пункт Создать и затем пункт Проект.
    2. В диалоговом окне Добавление нового проекта щелкните Visual C# в разделе Типы проектов, Windows Forms Приложение в разделе Шаблоны и нажмите кнопку ОК.
    3. Чтобы добавить два экземпляра элемента управления SmoothProgressBar в форму, выполните следующие действия:
      1. В меню Сервис выберите пункт Выбрать элементы панели элементов.
      2. Перейдите на вкладку Платформа .NET Framework Компоненты.
      3. Нажмите кнопку Обзор и найдите файлSmoothProgressBar.dll , созданный в разделе Создание пользовательского элемента управления ProgressBar .
      4. Нажмите кнопку ОК.

      Примечание. Элемент управления SmoothProgressBar добавляется на панель элементов.

      if (this.smoothProgressBar1.Value > 0) < this.smoothProgressBar1.Value--; this.smoothProgressBar2.Value++; >else
      this.smoothProgressBar1.Value = 100; this.smoothProgressBar2.Value = 0; this.timer1.Interval = 1; this.timer1.Enabled = true; 

      Примечание. Два индикатора хода выполнения отображают ход выполнения текста. Один индикатор хода выполнения отображает ход выполнения все более, а другой индикатор хода выполнения отображает ход выполнения в порядке уменьшения или обратного отсчета.

      Прогресс-бар

      Прогресс-бар — это индикатор, который отображает прогресс выполнения задачи.

      В библиотеке элементов Контура прогресс-бар имеет горизонтальный вид, но вообще он может быть любой формы. Например, Microsoft использует круглый индикатор и называет его ProgressRing:

      Используйте прогресс-бар, если процесс в среднем длится дольше 10 секунд. Понимание того, когда процесс завершится, дает ощущение контроля и улучшает пользовательский опыт.

      Если это уместно, дайте возможность отменить задачу и сделайте прогресс-бар не модальным, чтобы он не блокировал работу в сервисе.

      Если процесс происходит на стороне сервера и можно закрыть окно браузера — сообщите об этом пользователю.

      Создание прогресс-бара требует больше усилий, чем подключение спиннера, и оправдано, если сценарий частотный.

      Если получить данные о ходе выполнения задачи невозможно, лучше использовать спиннер. Имитировать работу прогресс-бара можно, только если он носит дополнительный и иллюстративный характер. Например, глобальный лоадер сопровождает загрузку контента, его задача ― заполнить паузу до появления первых элементов страницы, а не дать точную обратную связь.

      Принцип работы

      Прогресс-бар делится на отрезки по количеству подзадач пропорционально среднему времени их выполнения. Например, чтобы выполнить команду пользователя, нужно сделать три подзадачи. Известно, что первые две в среднем занимают по 10 секунд, третья — 5 секунд. Значит, должны получиться такие отрезки:

      0 % → 40 % → 80 % → 100 %

      Отрезок заполняется с постоянной скоростью, равной: длина отрезка / среднее время. Если отрезок заполнился, а подзадача все еще выполняется, прогресс-бар останавливается и ждет завершения подзадачи. Если подзадача выполнится раньше среднего времени, отрезок заполняется с ускорением easeOutQuint.

      Последний отрезок заполняется до 75 % и ждет, пока завершится подзадача, затем заполняется с ускорением.

      Если среднее время выполнения задач неизвестно, то прогресс-бар следует разделить на отрезки равной длины, а за среднее время взять минимально ожидаемое время.

      Если задача не имеет подзадач, то прогресс-бар может равномерно заполняться до значения 75 %, после чего ждать информации о завершении задачи. Фактически такой прогресс-бар является имитацией и малоинформативен для пользователей, лучше, когда есть три и больше подзадач.

      Заполнение прогресс-бара всегда должно только расти, но не уменьшаться. Откатывающийся назад прогресс-бар путает пользователей и снижает доверие к интерфейсу.

      Цвет

      Прогресс-бар можно красить в цвет продукта или ссылок в интерфейсе.

      Подпись

      Быстрые процессы не нужно сопровождать подписью. Но чем дольше процесс, тем больше подробностей о ходе выполнения задачи нужно сообщать.

      Укажите, сколько времени осталось до конца задачи. Округляйте в большую сторону: если процесс завершится раньше, пользователю будет приятно. Обратная ситуация вызовет негативные эмоции и снизит доверие к интерфейсу.

      Укажите, какой именно шаг выполняется в данный момент. Это объяснит пользователю, почему процесс такой долгий, и поможет скоротать время.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *