C # как загрузить форму с индикатором прогресса? - PullRequest
3 голосов
/ 21 декабря 2010

Я создал loadForm только с индикатором выполнения в стиле marquee.В моей mainForm я пытаюсь сделать это:

//before downloading
loadingForm lf = new loadingForm();
lf.Show();
//start downloading
//finishdownloading
lf.Close();

Была отображена loadForm, но индикатор выполнения не появился, и форма выглядела как сбой.после окончания загрузки loadForm была закрыта, и мое приложение продолжало нормально работать.В loadingForm у меня есть только:

void loadingForm_Load(object sender, EventArgs e)
{
     progressbar1.visible = true;
}

Я уже установил стиль progressbar1 для выделения в загрузочномForm.design.Как это исправить?заранее спасибо за помощь.

Ответы [ 3 ]

3 голосов
/ 21 декабря 2010

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

1 голос
/ 21 декабря 2010

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

0 голосов
/ 21 декабря 2010

Поток пользовательского интерфейса может не иметь «ресурсов» для перерисовки пользовательского интерфейса, вы должны использовать фоновый рабочий, как уже упоминалось, или обрабатывать сообщения приложения в очереди. Из метода Show () в метод Close () вы должны обязательно вызвать Application.DoEvents (), чтобы все сообщения Windows были обработаны (вместе с перерисовкой сообщений в форму приложения)

...