Уроки C# - ProgressBar + WebClient, HttpWebRequest, WebResponse - C#
Вставка
- Опубліковано 2 тра 2019
- Донаты и на кофе ➜ t.me/win10tweaker/171
Эксклюзив для спонсоров ➜ / xpuct
Если недоступна спонсорка ➜
Основной канал:
/ jailbreakvideo
Форум по C#:
win10tweaker.ru/forum/forum/%...
#ProgressBar #WebClient #HttpWebRequest #WebResponse #СиSharp #СиШарп - Наука та технологія
Спасибо за уроки Хачатур, глаза разбегаются с чего бы начать)
Необязательно ставить запятую что бы посмотреть что необходимо для той или иной функции итд, достаточно нажать crtl+shift+пробел
Это тот ролик который я ждал! Спасибо тебе за старания)
буквально месяца 4 назад я ненавидил твои видосы ибо нех непонятно было .... сегодня, прям мило посмотреть все доходчиво ,все ясно :)
Отличные уроки, лайк!
Спасибо Вам большое! Три дня забивал голову многопоточностью чтобы Progressbar не зависал - посмотрел видео - сделал за 20 минут!
Сперва думал, каким лешим ProgressBar с HTTP в одном ролике, а вот оно что оказывается. Прикольно. Надо тоже похожую штуку сделать будет
Огонь, спасибо за контент ! Подписка, лайк)
Урок просто огонь, побольше бы таких
Минимум воды - максимум пользы, Спасибо!
Привет!) Благодарю за уроки - доступные, живые)
Было бы не плохо узнать подробней про работу с API. Авторизация, запросы, ответы, подводные камни...
Спасибо)
Понятно и коротко)
Хороший урок, очень понятно
хорошие видосики, спасибо
вы просто красавчик !!!
Супер круто!!! Спасибо
Тут мысль о подключении TCP Udp когда используешь Uri, я имею ввиду пример приложения Wirewall
Хорошие уроки !!! Спс. Запрашивать размер данных через Header не всегда хорошо. В данном случае хедер генерируется сервером хостинга от куда качаются данные, но если у вас будет серверная программа, которая бы принимала данные от другой программы, тогда значение Content-Length будет таким, каким его сделает программист в программе-клиенте. И при его ошибке может получиться несоответствие, так как может прийти данных условно на 2Гб а в контент ленгс будет просто левое значение, например 100)))
великолепно!
Здравствуйте, подскажите пожалуйста как привязать прогрессбар к запуску программы через сетевой ресурс (локальная сеть) или программы находящейся на пк с отображением загрузки в прогрессбар. Заранее спасибо.
Лучший учитель
Суперр!
Спасибо.
Когда хочешь передать в ToString параметр, его можно передать с помощью интерполяции через двоеточие, возьму твой пример: $"Загружено: {e.ProgressPercentage}% ({e.BytesReceived / 1048576:#.#} МБ)"
WebClient нельзя поставить на паузу... Единственное, что огорчает. Спасибо. Я знаю, что видео два года!)
думаю было бы интересно, если бы Вы показали пару примеров по переопределению визуальных компонентов
есть пара вопросов не по теме
1 - есть разные числа double которые показываю в текстБоксе
когда число 1.0386 (не с запятой а с точкой) то конвертирует в стринг и выдает в текстбоксе как 10386 (тоесть убирает точку)
как мне правильно конвертировать в стринг?
2 -
также у некоторых чисел после запятой могут быть 3 знака и может 8
тоесть 1.003 или 0.00030049
если при конвертации в стринг пишу аргумент число.ToString("F3 или F8") это не по феншую
как определять сколько знаков после запятой (в принципе просто посчитать количестко символов)
но как это записать в число.ToString(сюда) чтобы выдавало правильное количество знаков после запятой ?
а ну и вместо запятой должна быть точка
ссори за стресс ;)
Возможно ли сделал этот прогресбар круглым? Или это только через другие варианты?
Привет! Какую музыку используешь?
Добрый вечер!
В видео Уроки C# - ProgressBar + WebClient, HttpWebRequest, WebResponse - C# - в видео время 18:19
вы использовали сочетание клавиш для перехода вверх по строке, вы не вырезали и не вставляли, не могли бы вы сказать мне, какие сочетания клавиш вы использовали.
Если что-то пропустили или не поняли, пишу на английском, пользуюсь переводчиком с португальского на русский.
Добрый 🖐
Alt + стрелка на клавиатуре 👍
Привет, очень хочу узнать можно ли красиво менять версию запускаемого браузера WebBrowser? И можно ли в одном приложении запускать разные версии webBrowser
В интернетах нашел только способ через ключ реестра FEATURE_BROWSER_EMULATION, но то не позволит мне запустить 2 браузера разных версий(ie7, ie11) в одном приложении
Привет 🖐
Любопытный вопрос. Отмечу себе и попробую посмотреть, какие там проблемы.
Я как то пытался встроить chromium в программу чтобы гугл карты нормально высвечивались, скачал библиотеку в итоге программа превратилась в кашу весом 300мб. Так что тоже интересно)
Как выставить timeout на определенное значение? Например, при LongPool сервере отправляя запрос, я получу ответ при новом действии. И действие при событии error; заданный timeout превышен.
ru.stackoverflow.com/questions/610009/long-polling-c
11:25 или правой кнопкой мыши по переменной/методу, во всплывающем меню строка: "переименовать"
Подскажите, а можно ли при помощи WebClient докачивать файлы? Допустим начал скачивание файла, а потом завершил программу и при новом запуске программы заставить докачать файл с той точки где он остановил скачивание
stackoverflow.com/a/16004845
Годно.
интересно
Добрый день)
Зашел на основной канал, так и не нашел видео, как можно сменить цвет прогресс бара...
А реально ещё сменить задний фон ?
Привет ты лучший. Спасибо тебе) Почему не используешь ReSharper ?
Привет 🖐
Думал сделать отдельно даже Portable.
Думаю доберёмся.
@@XpucT C ReSharper надо разобраться в настройках чтобы получить перфоманс потому что он работает в процессе самой VS и для него там почти нет места. И даже на i5-том с 16 RAM лагает дико(((
@@mikepytchak8883 Согласен, очень уж удобная штука, но и ждать каждый раз по 40 секунд пока грузится ReSharper как-то не очень.
Приветствую!
После просмотра урока у меня остались вопросы:
1. как прикрутить прогресс бар к внешнему процессу, например процессу, в котором происходит обработка списка элементов из базы данных, и как сделать так чтоб в этом процессе вызвался ProgressBar и без нажатия каких либо кнопок в форме (см. второй вопрос) по мере обработки элементов в прогрессбаре показывалось бы состояние обработки? (то есть ProgressBar.Value изменяется внешним процессом/потоком)
2. можно ли ProgressBar вызвать без создания формы?
3. если процессов (циклов в процессе) обработки несколько, как в форме изменять количество прогрессбаров и привязывать к разным циклам обработки?
Вот пример кода основного процесса:
namespace ConsoleApp1
{
public class Counter
{
public static int Value = 0;
static void Main(string[] args)
{
int max = 100;
int value = 0;
Task.Run(() =>
{
Form1 form = new Form1(max);
form.ShowDialog();
});
while (value < max)
{
value++;
Value = value;
Console.WriteLine(value.ToString());
Thread.Sleep(50);
}
}
}
}
Вот код формы:
namespace ConsoleApp1
{
public partial class Form1 : Form
{
public Form1(int max)
{
InitializeComponent();
progressBar.Maximum = max;
Thread thread = new Thread(Process);
thread.Start();
}
void Process()
{
if (InvokeRequired)
{
BeginInvoke((Action)Process);
}
else
{
while (progressBar.Value < Counter.Value)
progressBar.Value = Counter.Value;
}
}
}
}
@@XpucT вижу ответ из одного слова "Шкот", значение которого не понимаю
Здорово! Интересно, а есть видео как делается export из MySQL в excel таблицу. Там количество строк меняется и интересно процент загрузки как делается :)
Привет Хачатур, как насчет того чтобы ты сделал видос, где ты от а до я создаешь какую то программу(от дизайна формы до публикации) это было бы интересно)
На пример что-то типа punto switcher'а
Можешь сделать видео урок как например парсить какую-то инфу с интернета?
Пример: вставляешь ссылку на какой-то сайт, нажимаешь парсить и получаешь ту инфу, которая тебе нужна, но на примере c#
Мы проходили это в этом видео: ua-cam.com/video/HLBSTuGMiqI/v-deo.html
Главное - не пропускать материал и не перематывать =)
Хачатур, спасибо огромное! как обычно все доступно и просто. Подскажи пожалуйста, как при удалении n-количества файлов в папке ПРОПУСТИТЬ/НЕ ТРОГАТЬ те которые заняты каким-либо процессом? выдает ошибку ( System.IO.IOException: "Процесс не может получить доступ к файлу ).
void Button1_Click(object sender, EventArgs e)
{
string file = @"C:\Temp\Заблокированный файл.log";
MessageBox.Show(CanDelete(file) ? "Можно удалить" : "Нельзя удалить");
}
bool CanDelete(string file)
{
try
{
using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.None))
return true;
}
catch
{
return false;
}
}
@@XpucT Спасибо большое! понял в какую сторону копать !!!!
foreach (var file in Directory.GetFiles($@"C:\Users\{Environment.UserName}\AppData\Local\Temp"))
{
try
{
File.Delete(file);
}
catch
{
}
А если надо выводить количество процентов в лейбле, а у нас Макс = 28 и value++; интуитивно понятно что 14 = 50%, как быть с остальными промежуточными значениями? Писать формулу на вывод?
Я когда делал прогресс бар, у меня Макс всегда был 100. Допустим файлов 28. Значит double Qt = 100/28 = 3.57; //это величина за один шаг. Далее я после каждого вычисления наращивал Qt на эту величину и присваивал в ProgressBar.Value = (int)Qt;
P.s.
Потом до меня дошло что лучше делать как вы, а в лэйбл выводить конвертацию value значения в проценты:
Label1.Text = "Загружено " + (100 / 28 * ProgressBar.Value) + "%";
А чтобы progressbar плавнее работал, можно было установить его максимум на Content-Length, а в DownloadProgressChanged устанавливать его value на BytesReceived и он будет максимально плавно и красиво работать.
1) какую ты библиотеку подключил
2) я что не могу найти видео на основном канале как ты меняешь цвет.
3) продолжай выкладывать виде. Видео класс.
Не понял вопрос. Таймкод, пожалуйста.
@@XpucT я про 0:48
@@Ivan_sev «потому что смотрите на основном канале, вот почему»
ua-cam.com/video/gb3DMe5OJBg/v-deo.html
@@XpucT спасибо.
@@XpucT забыл спросить. Так какую библиотеку ты подключил
а как сделать две разных файлов скачек через разные Butoon в ProgressBar
Вопрос такой: ты говорил что непрямые ссылки по-другому работают. Я нашёл ссылку на видео в коде страницы, webclient её видит, ошибки нет, но загрузка не идёт. В чём может быть проблема?
Причин может быть масса: например, в том, что сервер, с которого Ты собираешься скачать, проверяет user-agent клиента. И если видит, что это не браузер, не даёт загрузить. Первое, что делаю лично Я в таких случаях ставлю ему user-agent Mozilla:
stackoverflow.com/a/11841680
@@XpucT Увы, это не сработало. Можешь назвать ещё какие-нибудь причины
А будут видео по БД MSSql Server? Интересно будет послушать как работать с хранимыми процедурами, добавление, удаления, редактирование. Как эту лубуду написать максимально коротко и понятно.
Как раз недавно отвечал. Прямая ссылка на коммент:
ua-cam.com/video/vNJP7PIx4DM/v-deo.html&lc=UgxE9yR9OhLyODER5fN4AaABAg
Сделай, пожалуйста, ролик про передачу файлов по tcp. Достаточно болезненная тема( Лучше тебя все равно никто не объяснит
Добрую НОЧЬ). Вы не знаете как сделать типа аргументы запуска? Ну например - Когда наживаешь правой кнопкой мыши на ехе игры какой нибудь, выбираешь свойства, то там можно ввести аргумент например "-Level (Уровень, который будет загружаться при запуске))". Вот я тоже самое хочу сделать со своей программой. Не подскажите как? Хочу сделать аргумент developermode. Буду рад любой помощи)
Обязательно про это будет видео, но если коротко, то:
string[] keys = Environment.GetCommandLineArgs();
foreach (string key in keys)
if (key.Contains("аргумиент"))
...
@@XpucT Огромное спасибо. Очень жду видео!)
@@XpucT Я бы ещё рекомендовал бы уже начать делать уроки по WPF. WinForms устарел уже, WPF технологичней и мощней +Можно легко, быстро и красиво сделать дизайн. Многие уже перестали писать фрейморки, библиотеки под WinForms, перешли на WPF. По UWP, он ещё сырой, но это почти тот же WPF. Не заставляю, но хотелось бы в будущем) Об достоинствах WPF над WinForms можно почитать в Вики например.
@@user-jd8ny5sg8e О, про WPF не просто знаю, но и пишу. Но когда пришёл к MVVM понял, что перед тем, как делать туториалы на эту тему, нужно очень хорошо подумать, как эту паутину объяснить. Всё то, что сейчас объясняется в сети - говно полное. Поэтому пока не делаю. Нужно составить снова свою последовательность.
В .net 6 WebClient не рекомендуется использовать если что
Привет!
Как приостановить скачивание файла, а потом возобновить? Я видел у webClient нет такой штуки, есть только отмена всего этого потока.
Привет 🖐
Простой pause не существует. Нужна своя реализация. Готовых полно.
Вот некоторые из них: stackoverflow.com/questions/15995705/adding-pause-and-continue-ability-in-my-downloader#:~:text=unfortunately%20WebClient%20has%20no%20ways,getting%20response%20stream%20with%20flag.
Хачатур, доброй ночи) Подскажи пожалуйста а как можно реализовать прогресс бар на время ответа от сервера?То есть я отправляю POST запрос на сервер и у меня пока не истек тайм-аут ответа от сервера,увеличивается прогресс бар.Как только сервер ответил,прогресс бар заполнился.И при следующем запросе сбрасывался и начинал снова считать время ответа от сервера.И т.д
Привет 🎅
Так ведь всё просто:
while (не получил ответ)
progressbar.Value++
@@XpucT , дааа!Спасибо!Видимо пора спать=)
@@XpucT Не, что-то не пойму как вытащить прогресс.Вот кусок кода где все делаю:
public async Task postXMLData(string destinationUrl, string requestXml)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destinationUrl);
byte[] bytes;
bytes = System.Text.Encoding.UTF8.GetBytes(requestXml);
request.ContentType = "text/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
try {
Stream requestStream = await request.GetRequestStreamAsync();
//вот тут падает по таймауту и мне нужно отловить это в прогрессбар
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse) await request.GetResponseAsync();
if (response.StatusCode == HttpStatusCode.OK)
textBox3.AppendText(response.StatusCode.ToString());
{
Stream responseStream = response.GetResponseStream();
string responseStr = new StreamReader(responseStream).ReadToEnd();
return responseStr;
}
}
catch(WebException ex) {
textBox3.AppendText(ex.ToString());
}
return null;
}
Возможно ли поставить загрузку файла через DownloadFileAsync на паузу?
stackoverflow.com/questions/15995705/adding-pause-and-continue-ability-in-my-downloader
ВСё ХрисТ жду wcf & unity
Привет, спасибо огромное за уроки. Пишу свою первую курсовую на C#(Построение фракталов). Без Ваших видео-роликов было бы всё очень долго и нудно :) У меня вопрос- как привязать прогрессбар например к методу отрисовки Фрактального Дерева на пикчербоксе, программа постоянно дропается на первом шаге. Может кто знает?)
Привет 🖐
Нужен код, чтобы понимать как организовано фрактальное дерево.
А потом админы сайта виртуальная коробка орг, ругались на ддос атаки)
Как можно достать имя и расширение файла, во время загрузки через WebClient?, в интернете инструкцию не нашёл.
1. От загружаемого файла просто берём имя без пути. То есть убираем / в адресе.
2. Потом из имени берём всё то, что идёт после последней точки - это будет расширением.
Я сделал так: string name = Path.GetFileName(URL);
@@adamiyy tnx
В Directory ошибка
у тебя есть уроки по ассихронности?
Как насчёт нажать на ссылочку плейлиста по урокам?
ua-cam.com/play/PL05SB3rBbUsraqiEUeS70RKhVAu97nGeb.html
Здраствуйте, у меня тут проблема. У меня типа Iso Downloader, а это значит что файлы большие будут качаться, и как бы я код написал, нету ошибок и даже предупреждений. И когда образ качаеться, то когда доходит до 19 кб, всё, перестаёт качаться. Буду рад любой помощи.
Добрый день.
А что собственно не так, если придерживаться того, что в видео?
Может на сервере стоит Firewall? Пробовали что-то другое скачать?
@@XpucT Образы залиты на Яндекс Диск. Если просто Web Client, без всяких прогресс баров, скоростей загрузки и размера, то качаеться нормально. Чуствую придёться пересмотреть видео) Спасибо за помощь.
Я уже кажеться разобрался в чём проблема) Спасибо ещё раз
Всем привет подскажите пожалуйста как реализовать следующие
В видео показанно как скачивает виртуал бок и выводят в лейбл и прогресс бар .
Но у меня возник вопрос.
К примеру я создал класс update в него заехал код скачивания.
Но прогресс бар и лэйбал находятся на форуме к примеру FormUpdate как мне передать данные скачки из класса на форму.
Привет 🖐
Написал две программы для Тебя. Наглядные примеры с делегатом и с полем.
www.upload.ee/files/12007401/Class_to_Form.rar.html
Также стоит ознакомиться с этой страницей для общего ознакомления:
www.cyberforum.ru/windows-forms/thread110436.html
@@XpucT спасибо огромное.
Буду скоро дома гляну.
А еще вопрос.
Как определить что поток закончил работу и оповестить что программа закончила скачивание.
И как можно реализовать установку аватара.
То есть пользователь установил фото и оно сохранилось в программе.
Я знаю можно картинку переводить в байты и назад.
Но чет второй день не могу реализовать это
@@XpucT лучший учитель по с#
Подписка лайк 100%
// Как оповестить, что программа закончила скачивание:
bool downloading = true;
async void button1_Click(object sender, EventArgs e)
{
SomeTask();
while (downloading)
await Task.Delay(1000);
// Тут оповещаем о том, что скачивание завершено
// Программа не доберётся до сюда пока downloading = true
}
async void SomeTask()
{
await Task.Run(() =>
{
// Здесь выполняется скачивание, в конце которого делаем working = false
// код
// код
// код
// код
downloading = false;
});
}
// Касаемо аватара
// Как в pictureBox воткнуть изображение с компа:
pictureBox1.Image = Image.FromFile(@"С:\Morozko\Picture.jpg");
// Как в pictureBox воткнуть аватар из онлайна:
using (Stream wat = WebRequest.Create("ссылка/На/Картинку.jpg").GetResponse().GetResponseStream())
AttachScreen.BackgroundImage = Bitmap.FromStream(wat);
ты снял видео как скачать по ссылке файл, а можешь снять видео как наоборот отправить файл по ссылке или в Яндекс диск. " мне просто надо сделать так чтобы папка с работами на Яндекс диск отправлялись".
У Яндекса свои инструменты для этого. Яндекс.Диск.
Всем привет! Я прошу прощения что не по теме. У меня в listBox принимаются значения с базы данных ( select ), и я бы хотел сделать поиск элемента в самом listBox - е, но не знаю как это нормально сделать. Буду очень благодарен если кто-то поможет:)
Не юзал базы данных с listBox, поэтому не уверен. Но я обычно делаю так когда нужно в листбоксе найти какой-нить элемент по стрингу:
int objectIndex = listBox1.Items.IndexOf("Элемент который нужно найти");
string str = listBox1.Items[ObjectIndex].ToString();
@@adamiyy Спасибо большое за помощь:) но я уже вместо listBox поставил dataGridView. Там намного легче реализовать поиск и лучше отображает принятые с базы значения.
Хотелось бы еще узнать как вместо IE-браузера в приложении использовать Chromium или что-то, что будет показывать веб-страницы нормально (некоторые js-скрипты выполняются некорректно и сайты предупреждают об этом). Спасибо!
(На данный момент использую второе приложение на NWjs с браузером, которое открывается поверх приложения в стиле popup)
Дело в том, что допустим на Windows 7 мое приложение поведет себя неправильно при например ie7, а не 11
@@tyuop Тоже помучался с этим. Попробуй CefSharp, Chromium Embedded Framework (CEF). Все работает на ура.
Привет. А как также, только при копировании файлов?
Привет 🖐
stackoverflow.com/questions/6044629/file-copy-with-progress-bar
@@XpucT спасибо!
Прогресс бар это хорошо но делать ему стиль сложно. Проще использовать PictureBox как прогресс бар.
Да, порой хитростью решать вопросы и красивее и меньше кода и проще.
@@XpucT Да как то выкручиваться приходится недавно начал изучать. Винформ устарел но впф вгоняет меня в ужас)
как ты поменял цвет процес бара?
ua-cam.com/video/gb3DMe5OJBg/v-deo.html
@@XpucTспасибо)
нужно чтоб когда нажимаешь F1
перекидывало на видосы с канала
А как скачать два файла с HTTP сервера а информацию за загрузку вывести в один progressBar?
Парсить оба потока в отдельную переменную и уже её выводить на экран.
То есть каждый поток накручивает не интерфейс, а переменную, которая крутится в интерфейсе.
@@XpucT Спасибо что быстро ответили. Может видосик по этой теме сделаете а то я только начал учится этому не совсем понимаю то что вы говорите.
@@ko-games7768 так тут целый курс =)
Поддерживаю KO-GAMES хотя бы небольшой пример.
@@tatarnikov1000 Пример:
Если файла 2, то разделить значение Percentage на 2 и присвоить к Value. Если 3, то разделить на 3. Всё просто.
Щас в моем лоадер читов будет автообновления 🖤
чит для какой игры?
24:00 компилятор ругается на "e" в строке (по вашему) 33 (ошибка СS0136)
"e" уже есть? поэтому замените на "a" например.
@@XpucT это я сделал) просто по-моему у вас в коде "e" так же встречается 2 раза, и он работает
@@artemklokov8182 потому что в главном методе нет конфликта с этим самым 'e'
Только в итоге exe он качает как надо, а вот остальные файлы с другими расширениями упирауются в 100 кбайт
Дай ссылку на основной канал. Спб
ua-cam.com/users/JailbreakVideo
а как быстро коментировать строки?
i.imgur.com/aND9hWf.png
@@XpucT спасибо, но я думал будет другой способ. На видосе ты это делал так быстро
Паузы нет в WebClient
Не подскажите как сделать?) Или узнать где люди уже сделали)
void Form1_Load(object sender, EventArgs e)
{
progressBar1.Visible = false;
textBox1.Text = "Вставьте сюда ссылку";
}
private void button1_Click(object sender, EventArgs e)
{
string url = textBox1.Text;
using (WebClient wc = new WebClient())
{
wc.OpenRead(url);
string size = (Convert.ToDouble(wc.ResponseHeaders["Content-Length"]) / 1048576).ToString("#.# МБ");
wc.DownloadProgressChanged += (s, c) =>
{
label1.Text = $"Размер файла{size} Загружено: {c.ProgressPercentage}%";
label2.Text = $"Загружено: {c.ProgressPercentage}%";
progressBar1.Value = c.ProgressPercentage; };
wc.DownloadFileAsync(new Uri(url), @"C:\Down\Skype");
progressBar1.Visible = true;
}
}
private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
textBox1.Text = "";
button1.Visible = true;
}
}
Просил видео по http а оно оказывается есть)))
Единственное я не разобрался, как сделать так чтобы после загрузки файла он не сохранялся автоматически на раб. стол, а вылетало диалоговое окошко "Сохранить как..."?
UPD:
Фух, просидел 2 часа и нашел таки рабочее решение, оставлю здесь может кому пригодится (можете сразу тестить грузит гугл картинку):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
namespace WForms1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
var dialog = new SaveFileDialog();
dialog.Filter = "PNG (*.png)|*.png";
var result = dialog.ShowDialog(); //shows save file dialog
if (result == DialogResult.OK)
{
var wClient = new WebClient();
wClient.DownloadFile("www.google.com/logos/doodles/2019/fall-2019-northern-hemisphere-4762325427945472-s.png", dialog.FileName);
}
}
}
}
Буду благодарен если научите как отдавать имя файла в диалоговое окно сохранения)
@@SEOmaster_real В saveFileDialog есть FileName, это имя приложения
А где домашка?
В качестве домашки требуется сделать симпатичный доунлоадер 👍
Поддерживаю KO-GAMES как прикрутить второй файл хотя бы небольшой пример.
Пример:
Если файла 2, то разделить значение Percentage на 2 и присвоить к Value. Если 3, то разделить на 3. Всё просто.
@@XpucT Спасибо. я примерно в этом направлении пробовал просто сообразить
не могу как правильно это сделать
@@tatarnikov1000 в рамках 20 уроков не может быть, чтобы было что-то не понятно. Тем более складывание и деление.
@@XpucT я не могу правильно цикл сделать через foreach у меня ошибка
"WebClient не поддерживает параллельные операции ввода-вывода."
@@tatarnikov1000 показывай код.
"Смотреть как поменять цвет ProgressBar(а) на основном канале", а ссылки на видео нет... Умно (нет).
ua-cam.com/play/PL0U1uvNv2tf6DduPOCc9-IGJjdVghlvo_.html
15:04
9:44
и домашнего задания нет :(
Визуально мы тут почти ничего хитрого не делаем, поэтому в качестве домашнего задания можно просто потренировать навыки написания событий и обработчиков для загрузки. В следующем видео, как раз упоминается домашка по этой теме 👍
@@XpucT да я видел там парень написал loader, я уже до LINQа дошёл, но смотреть и вникать буду завтра
20:15
А как через переменные среды найти папк "Загрузки"? Сейчас я через реестр ее нахожу, где бы она ни была, а иначе можно?
downloadFolder = Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "{374DE290-123F-4565-9164-39C4925E467B}", @"D:\Downloads").ToString();