2012-05-30 133 views
2

我有和應用程序窗體窗體.net和我的窗體1需要大量時間才能顯示,因爲在它的事件form1_Load做了很多操作。如何在我的應用程序加載時顯示圖像

我的目標是在操作完成時顯示圖像。

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

雖然我methode1()的工作,我的形式犯規表演,我想在屏幕上顯示的圖像,而我的methode1()的工作,因爲在methode1()工作,沒有什麼在屏幕上。

+1

在C#谷歌的閃屏 –

回答

2

所有.NET中的視覺的東西是在形式完成。您可以通過創建一個包含圖像的小表單,在module1()之前加載並在完成module1()關閉之後完成。正下方..

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(); 
    } 

此代碼使用微軟的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

相關問題