Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Steroid
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1

Показать прогресс скачивания и установки

04.04.2016, 11:41. Показов 2427. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
(Начало обсуждения)

Хочу реализовать ПрогрессБар либо в той же форме с чекбоксами либо в отдельной которая открывается при нажатии на кнопку "инстал"
должна отображать (если в тойже форме) скачивание файла и установку (хотябы скачивание) .
(Если в отдельной форме) то прогресс скачивания "данного" файла и общий прогресс,
Если можно, то просьба не приписывать код как он должен быть, а как нибудь в виде примера или чтото типа этого, хотелось бы самому додумать. А то получается ты мне пол кода уже написал, конечно я очень благодарен, но так эфект обучение меркнет

ПыСы. гугл и msn я уже спрашивал, но там только примеры нашел с таймером прогрессбар стартует когда таймер запускается
или если чтото нашел на скачь то не совсем понял как мне это в свой код приписать, темболее как мне передать инфу в новую форму
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2016, 11:41
Ответы с готовыми решениями:

Прогресс бар для скачивания видео
Привет всем! Написал программу. Она скачивает видео по ссылке на него, все работает, но если видео большое и соответственно качается...

ProgressBar - отобразить прогресс скачивания файла
Народ обясните пожалуста как он работает.Тоесть вот мне надо скачать файл (например архив какойто типо прайсл-лист).А мне зделать так чтоб...

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

9
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18285 / 14208 / 5368
Регистрация: 17.03.2014
Сообщений: 28,887
Записей в блоге: 1
04.04.2016, 12:40
Лучший ответ Сообщение было отмечено Steroid как решение

Решение

Steroid, для прогресса можно использовать события класса WebClient. Насчет передачи данных между формами читай ответ на вопрос №2 в теме Ответы на 7 самых частых вопросов по WinForms, а также тему Архитектура ПО в WinForms (FAQ & HowTo)
1
 Аватар для Steroid
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
05.04.2016, 00:22  [ТС]
Спасибо
дома почитаю, а то многа букав (на работе некогда)

Добавлено через 9 часов 22 минуты
OwenGlendower, я кажется понял
мой код изначально был не совсем правильно построен
а точнее я делал форму и пытался из ходя из нее выводить всякие разные фукции
а надо было написать код и потом из него строить хоть десять форм (если своими словами) правильно?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18285 / 14208 / 5368
Регистрация: 17.03.2014
Сообщений: 28,887
Записей в блоге: 1
05.04.2016, 00:29
Steroid, в общем да.
1
 Аватар для Steroid
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
09.04.2016, 20:34  [ТС]
код переделал, теперь у меня на контролах ничего не висит
форма с чекбоксами с читывает все из chbxClass.cs

Форма с чекбоксами:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void InstallButton_Click(object sender, EventArgs e)
        {
            try
            {
if (checkBox1.Checked)
                {
                    chbxClass.Google();
                }
if (checkBox2.Checked)
                {
                    chbxClass.Mozilla();
                }


Класс chbxClass.cs:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void Google()
        {
            ProcessStartInfo go = new ProcessStartInfo();
            WebClient google = new WebClient();
            google.DownloadFile("https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7BA01E3D89-12EB-73E8-42E4-35DB1881DC3F%7D%26lang%3Dde%26browser%3D4%26usagestats%3D0%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26installdataindex%3Ddefaultbrowser/update2/installers/ChromeSetup.exe", @"C:\\Data\\ChromeSetup.exe");
            while (File.Exists(@"C:\\Data\\ChromeSetup.exe"))
            {
                Thread.Sleep(50);
            }
            go.Arguments = "/S";
            Process.Start(go).WaitForExit();
        }
        public static void Mozilla()
        {
            ProcessStartInfo mo = new ProcessStartInfo();
            WebClient mozilla = new WebClient();
            mozilla.DownloadFile("https://download-installer.cdn.mozilla.net/pub/firefox/releases/42.0/win32/de/Firefox%20Setup%20Stub%2042.0.exe", @"C:\\Data\\Mozilla.exe");
            while (File.Exists(@"C:\\Data\\Mozilla.exe"))
            {
                Thread.Sleep(50);
            }
            mo.Arguments = "/S";
            Process.Start(mo).WaitForExit();
        }


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

нужно чтоб отображалось с каждому чекбоксу свое и в отдельном прогресбаре общее
Изображения
 
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
09.04.2016, 21:05
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            string file = @"C:\\Data\\ChromeSetup.exe";
            WebClient google = new WebClient();
            google.DownloadProgressChanged += (s, a) => progressBar1.Value = a.ProgressPercentage;
            google.DownloadFileAsync(new Uri("https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7BA01E3D89-12EB-73E8-42E4-35DB1881DC3F%7D%26lang%3Dde%26browser%3D4%26usagestats%3D0%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26installdataindex%3Ddefaultbrowser/update2/installers/ChromeSetup.exe"), file);
            google.DownloadFileCompleted += (s, a) => {
                if (a.Error != null)
                    MessageBox.Show(a.Error.ToString());
                else
                {
                    ProcessStartInfo go = new ProcessStartInfo();
                    go.FileName = file;
                    go.Arguments = "/S";
 
                    Process.Start(go).WaitForExit();
                }
            };
Соответственно на форме должен быть прогрессбар с именем progressBar1.
1
 Аватар для Steroid
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
09.04.2016, 21:42  [ТС]
Someone007,

если я это припишу в классе а не в форме, как мне заставить прогрессбар на форме двигаться?
чтото типа menuForm.ProgressBar1.Value ? как это сделать можно ума не приложу

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string file = @"C:\\Data\\ChromeSetup.exe";
            WebClient google = new WebClient();
            google.DownloadProgressChanged += (s, a) => /* можно же сюда вписать както или???*/  progressBar1.Value = a.ProgressPercentage;
            google.DownloadFileAsync(new Uri("https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7BA01E3D89-12EB-73E8-42E4-35DB1881DC3F%7D%26lang%3Dde%26browser%3D4%26usagestats%3D0%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26installdataindex%3Ddefaultbrowser/update2/installers/ChromeSetup.exe"), file);
            google.DownloadFileCompleted += (s, a) => {
                if (a.Error != null)
                    MessageBox.Show(a.Error.ToString());
                else
                {
                    ProcessStartInfo go = new ProcessStartInfo();
                    go.FileName = file;
                    go.Arguments = "/S";
 
                    Process.Start(go).WaitForExit();
                }


незнаю понятно ли объяснил
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
10.04.2016, 00:21
Лучший ответ Сообщение было отмечено Steroid как решение

Решение

C#
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
    class BrowserInstaller
    {
        public delegate void ProgressUpdate(int pct);
 
        public event ProgressUpdate OnProgress;
 
        public void InstallChrome()
        {
            string file = @"C:\\Data\\ChromeSetup.exe";
            WebClient google = new WebClient();
            google.DownloadProgressChanged += (s, a) => OnProgress?.Invoke(a.ProgressPercentage);
            google.DownloadFileAsync(new Uri("https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7BA01E3D89-12EB-73E8-42E4-35DB1881DC3F%7D%26lang%3Dde%26browser%3D4%26usagestats%3D0%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26installdataindex%3Ddefaultbrowser/update2/installers/ChromeSetup.exe"), file);
            google.DownloadFileCompleted += (s, a) => {
                if (a.Error != null)
                    MessageBox.Show(a.Error.ToString());
                else
                {
                    ProcessStartInfo go = new ProcessStartInfo();
                    go.FileName = file;
                    go.Arguments = "/S";
 
                    Process.Start(go).WaitForExit();
                }
            };
        }
    }
Где-то в классе формы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Form1
{
    BrowserInstaller installer = new BrowserInstaller();
 
    void Form1_Load(object s, EventArgs e)
    {
        installer.OnProgress += (p) => progressBar1.Value = p;
    }
 
    private void InstallButton_Click(object sender, EventArgs e)
    {
        if (checkBox1.Checked)
        {
            installer.InstallChrome();
        }
        if (checkBox2.Checked)
        {
            installer.InstallMozilla();
        }
    }
}
1
 Аватар для Steroid
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
10.04.2016, 13:28  [ТС]
Someone007,
спасибо
это продвинуло меня дальше

Добавлено через 9 часов 11 минут
а как прописать несколько процессов скачивания в один прогрессбар?

и еще вопрос:
как правильно прописать копирование файла из одной точки в другую (в прогресбаре я имею в виду)
0
 Аватар для Steroid
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
11.04.2016, 22:03  [ТС]
Пуш
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2016, 22:03
Помогаю со студенческими работами здесь

Прогресс бар для отображения процесса скачивания файла
Сделал апдейтер для своей игры(Использовал game maker). Но иногда патчи бывают очень большие. А он их скачивает в фоновом режиме т. е не...

После распаковки файлов и установки обновлении на пункте "Завершение установки" прогресс останавливается
Устанавливаю с флешки, BIOS, не UEFI. Оперативной памяти 4 Гб, пытался ставить 64-разрядные системы. После распаковки файлов и...

Как показать прогресс действия?
Здравствуйте! Пишу приложение, в котором нужно указать происходящий прогресс. Проект переделываю из консольной версии и там это...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru