Меню Закрыть

C windows forms progressbar

TrackBar представляет собой элемент, который с помощью перемещения ползунка позволяет вводить числовые значения.

Некоторые важные свойства TrackBar:

Orientation : задает ориентацию ползунка — расположение по горизонтали или по вертикали

TickStyle : задает расположение делений на ползунке

TickFrequency : задает частоту делений на ползунке

Minimum : минимальное возможное значение на ползунке (по умолчанию 0)

Maximum : максимальное возможное значение на ползунке (по умолчанию 10)

Value : текущее значение ползунка. Должно находиться между Minimum и Maximum

Свойство TickStyle может принимать ряд значений:

None : деления отсутствуют

Both : деления расположены по обеим сторонам ползунка

BottomRight : у вертикального ползунка деления находятся справа, а у горизонтального — снизу

TopLeft : у вертикального ползунка деления находятся слева, а у горизонтального — сверху (применяется по умолчанию)

К наиболее важным событиям элемента следует отнести событие Scroll , которое позволяет обработать перемещение ползунка от одного деления к другому. Что может быть полезно, если нам надо, например, устанавливать соответствующую громкость звука в зависимости от значения ползунка, либо какике-нибудь другие настройки:

Timer

Timer является компонентом для запуска действий, повторяющихся через определенный промежуток времени. Хотя он не является визуальным элементом, но его аткже можно перетащить с Панели Инструментов на форму:

Наиболее важные свойства и методы таймера:

Свойство Enabled : при значении true указывает, что таймер будет запускаться вместе с запуском формы

Свойство Interval : указывает интервал в миллисекундах, через который будет срабатывать обработчик события Tick, которое есть у таймера

Метод Start() : запускает таймер

Метод Stop() : останавливает таймер

Для примера определим простую форму, на которую добавим кнопку и таймер. В файле кода формы определим следующий код:

Здесь в конструкторе формы устанавливаются начальные значения для таймера, кнопки и формы.

Читайте также:  Сброс маршрутов в windows 7

Через каждый интервал таймера будет срабатывать обработчик timer1_Tick , в котором изменяется положение кнопки по горизонтали с помощью свойства button1.Left . А с помощью дополнительной переменной koef можно управлять направлением движения.

Кроме того, с помощью обраотчика нажатия кнопки button1_Click можно либо остановить таймер (и вместе с ним движение кнопки), либо опять его запустить.

Индикатор прогресса ProgressBar

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

Наиболее важые свойства ProgressBar:

Minimum : минимальное возможное значение

Maximum : максимальное возможное значение

Value : текущее значение элемента

Step : шаг, на который изменится значение Value при вызове метода PerformStep

Для имитации работы прогрессбара поместим на форму таймер и в коде формы определим следующий код:

I want to show progress of calculations, which are performing in external library.

For example if I have some calculate method, and I want to use it for 100000 values in my Form class I can write:

I should perform step after each calculation. But what if I perform all 100000 calculations in external method. When should I "perform step" if I don’t want to make this method dependant on progress bar? I can, for example, write

but I don’t want to do like that.

3 Answers 3

I would suggest you have a look at BackgroundWorker. If you have a loop that large in your WinForm it will block and your app will look like it has hanged.

Сегодня речь пойдет об использовании в своих программах элемента ProgressBar. Для тех кто в танке — это инфомрер, как правило, отображающий процесс выполнения какого-либо долгого действия. По сути будет рассмотрено два вопроса: «как изменить значение элемента формы из потока» и «как работать с элементом прогресс бар»…
Как всегда начнем с пустого ВинФорм проекта, и добавления на него необходимых элементов: Label, Button, ProgressBar. Не будем заморачиваться по смене стандартных надписей и имен объектов — приступим к решительным действиям.
Данный материал был взят с сайта foolsoft.ru
Так как нам нужно какое-либо трудоемкое действие, то остановимся на умножении большого количества случайных чисел. Нажмем на нашу кнопку два раза и в событии клика по кнопке сгенерируем числа:

Читайте также:  Инстаграм выбрасывает из приложения

В результате имеем десять тысяч случайных чисел. Далее зададим параметры нашего прогресс бара. Так как Мы будем умножать 10000 чисел, то максимальное значение прогресс бара (когда полоска полностью закрашена) очевидно должно быть равно 10000, а текущее значение поставим в ноль.

А далее собственно суть вопроса. Для того что бы приложение продолжало работать без зависания формы в процессе долгой обработки, эту самую обработку стоит выполнять в отдельном потоке. А для того чтобы получить доступ к элементам формы из потока, нужно воспользоваться конструкцией this.Invoke(new ThreadStart(delegate< >));. Имеем:

Данный код создает новый процесс с явным указанием кода, который будет выполняться — пройтись по всем числам, показать в элементе label1 какие два числа мы умножаем и каков результат умножения, увеличивать значение элемента progressBar1 на один каждую итерацию цикла.

Рекомендуем к прочтению

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

Ваш адрес email не будет опубликован.