0

Сделал установку в одном окне, вод код:

private void pictureBox5_Click(object sender, EventArgs e)
{
    string mpapartment = path + @"\update\x64\dlcpacks\mpapartment\dlc.rpf";
string url = "SERVER";
check();

MessageBox.Show(mpapartment);
MessageBox.Show("Загрузка началась.");
wc.DownloadFileAsync(new Uri(url), mpapartment);

Thread.Sleep(1000);
Form ifrm = new Form1();
ifrm.Show(); // отображаем Form2
this.Hide(); // скрываем Form1 (this - текущая форма)

}

Мне надо как-то вывести это все дело в другую форму с ProgressBar

aepot
  • 49,560
1k237
  • 21
  • 2
  • Пожалуйста, уточните вашу конкретную проблему или приведите более подробную информацию о том, что именно вам нужно. В текущем виде сложно понять, что именно вы спрашиваете. – Дух сообщества Sep 03 '21 at 18:51

1 Answers1

3

Создайте метод в другой форме

public void SetProgress(int value)
{
    progressBar1.Value = value;
}

Потом измените основной

private void pictureBox5_Click(object sender, EventArgs e)
{
    string mpapartment = Path.Combine(path, @"update\x64\dlcpacks\mpapartment\dlc.rpf");
string url = "SERVER";

Form ifrm = new Form1();
ifrm.Closed += (s, e) => this.Show();

WebClient client = new WebClient();
client.DownloadProgressChanged += (s, e) => { ifrm.SetProgress(e.ProgressPercentage); };
client.DownloadFileCompleted += (s, e) => ifrm.Close();
client.DownloadFileAsync(new Uri(url), mpapartment);

ifrm.Show();
this.Hide();

}


Есть кстати решение получше, посовременнее, с использовением HttpClient вместо устаревшего WebClient и нормальной асинхронностью.

aepot
  • 49,560
  • у меня вылезает ошибка с переменной e. ifrm.Closed += (s, e) => this.Show(); client.DownloadProgressChanged += (s, e) => { ifrm.SetProgress(e.ProgressPercentage); }; client.DownloadFileCompleted += (s, e) => ifrm.Close(); client.DownloadFileAsync(new Uri(url), mpapartment); – 1k237 Sep 05 '21 at 17:19
  • @1k237 а какая именно ошибка и в какой именно строке, вы конечно же не скажете? Вы уверены, что скопировали себе код правильно? И куда делся WebClient client = new WebClient();? Верните его на место. – aepot Sep 05 '21 at 17:23
  • SetProgress и в переменной e – 1k237 Sep 05 '21 at 17:24
  • @1k237 текст ошибки скажите, я не телепат. – aepot Sep 05 '21 at 17:26
  • Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка CS0136 Локальная переменная или параметр с именем "e" нельзя объявить в данной области, так как это имя используется во включающей локальной области для определения локальной переменной или параметра newgui C:\Users\Администратор\Desktop\коран\чурка\newgui\newgui\Form2.cs 124 Активные – 1k237 Sep 05 '21 at 18:32
  • @1k237 ну переименуйте ее например ea – aepot Sep 05 '21 at 19:07