2012-05-30 3 views
2

У меня есть и окна приложений. .net и моя форма1 занимает много времени, потому что в этом событии form1_Load выполняет большую работу.Как я могу показать изображение во время загрузки моего приложения

Моя цель - показать изображение во время выполнения операции.

private void form1_Load(object sender, EventArgs e) 
{    
    methode1(); 
} 

В то время как мой methode1() работает, моя форма не показывает, я хочу показать изображение на экране в то время как мой methode1() работает, потому что в то время как methode1() работает, нет ничего на экране ,

+1

Google для заставки в C# –

ответ

2

Все визуальные вещи в .net делается на форме. Вы можете сделать это, создав небольшую форму, которая содержит загрузку изображения перед модулем 1(), и после завершения модуля1() закройте его. Чуть ниже ..

private void form1_Load(object sender, EventArgs e) 
{  
     Form f = new Form(); 
     f.Size = new Size(400, 10); 
     f.FormBorderStyle = FormBorderStyle.None; 
     f.MinimizeBox = false; 
     f.MaximizeBox = false; 
     Image im = Image.FromFile(path); 
     PictureBox pb = new PictureBox(); 
     pb.Dock = DockStyle.Fill; 
     pb.Image = im; 
     pb.Location = new Point(5, 5); 
     f.Controls.Add(pb); 
     f.Show();   
     methode1(); 
     f.Close(); 
} 
2

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

2

Попробуйте этот код

using System.Reactive.Linq; 

    private void RealForm_Load(object sender, EventArgs e) 
    { 
     var g = new Splash(); 

     // place in this delegate the call to your time consuming operation 
     var timeConsumingOperation = Observable.Start(() => Thread.Sleep(5000)); 
     timeConsumingOperation.ObserveOn(this).Subscribe(x => 
     { 
      g.Close(); 
      this.Visible = true; 
     }); 

     this.Visible = false; 
     g.ShowDialog(); 
    } 

Этот код использует Microsoft Rx для выполнения операций в фоновых потоков среди других интересных функций

http://msdn.microsoft.com/en-us/data/gg577609.aspx

Для того, чтобы этот код для работы вам необходимо обратиться к двум пакетам nuget: формы окон Rx и Rx

https://nuget.org/packages/Rx-Main/1.0.11226

https://nuget.org/packages/Rx-WinForms/1.0.11226

Смежные вопросы