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

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

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

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

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

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

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

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

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

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

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

Решение

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

Добавлено через 9 часов 22 минуты
OwenGlendower, я кажется понял
мой код изначально был не совсем правильно построен
а точнее я делал форму и пытался из ходя из нее выводить всякие разные фукции
а надо было написать код и потом из него строить хоть десять форм (если своими словами) правильно?
0
Администратор
Эксперт .NET
17717 / 13842 / 5315
Регистрация: 17.03.2014
Сообщений: 28,352
Записей в блоге: 1
05.04.2016, 00:29 4
Steroid, в общем да.
1
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
09.04.2016, 20:34  [ТС] 5
код переделал, теперь у меня на контролах ничего не висит
форма с чекбоксами с читывает все из 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
6511 / 4087 / 1606
Регистрация: 09.05.2015
Сообщений: 9,553
09.04.2016, 21:05 6
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
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
09.04.2016, 21:42  [ТС] 7
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
6511 / 4087 / 1606
Регистрация: 09.05.2015
Сообщений: 9,553
10.04.2016, 00:21 8
Лучший ответ Сообщение было отмечено 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
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
10.04.2016, 13:28  [ТС] 9
Someone007,
спасибо
это продвинуло меня дальше

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

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

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

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

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

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

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

После скачивания и установки игры, все файлы на компьютере зашифровались
Помогите, пожалуйста!После скачивания и установки игры, все файлы на компьютере зашифровались,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru