Как я показываю “Загрузку... ожидайте” сообщение в Winforms для длинной формы загрузки?

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

В результате форма занимает много времени к загруженному.

Как я загружаю форму сначала, затем отображаю ее и в то время как загрузка задержки показывает другую форму, которая это имеет сообщение как "Загрузка..., ожидайте.?"

43
задан David Basarab 16 December 2009 в 22:18
поделиться

5 ответов

Использование отдельного потока для отображения простого сообщения «пожалуйста, подождите» - это излишнее, особенно если у вас нет большого опыта работы с потоками.

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

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

Единственным ограничением этого подхода является то, что ваша форма «Пожалуйста, подождите» не может быть анимирована (например, анимированный GIF), потому что поток занят загрузкой вашей основной формы.

PleaseWaitForm pleaseWait=new PleaseWaitForm ();

// Display form modelessly
pleaseWait.Show();

//  ALlow main UI thread to properly display please wait form.
Application.DoEvents();

// Show or load the main form.
mainForm.ShowDialog();
57
ответ дан 26 November 2019 в 22:28
поделиться

Вы хотите заглянуть в экраны «Заставка».

Отобразите еще одну форму «Заставка» и дождитесь завершения обработки.

Вот быстрый и грязный пост о том, как это сделать.

Вот лучший пример .

18
ответ дан 26 November 2019 в 22:28
поделиться

A simple solution:

using (Form2 f2 = new Form2())
{
    f2.Show();
    f2.Update();

    System.Threading.Thread.Sleep(2500);
} // f2 is closed and disposed here

And then substitute your Loading for the Sleep.
This blocks the UI thread, on purpose.

7
ответ дан 26 November 2019 в 22:28
поделиться

Вы должны создать фоновый поток для создания и заполнения формы. Это позволит вашему потоку переднего плана отображать сообщение о загрузке.

5
ответ дан 26 November 2019 в 22:28
поделиться

You can take a look at my splash screen implementation: C# winforms startup (Splash) form not hiding

4
ответ дан 26 November 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: